From 9254c24d459903fb67b60a6212ef6266ea7cd836 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 20:40:23 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 20:40:23. --- .../20260515/20260515204002-Binary.backup | Bin 0 -> 242685 bytes .../20260515/20260515204002-Config.rsc | 3409 +++++++++++++++++ .../20260515/20260515204002-Diff-Config.rsc | 5 + 3 files changed, 3414 insertions(+) create mode 100644 MikroMaster/20260515/20260515204002-Binary.backup create mode 100644 MikroMaster/20260515/20260515204002-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515204002-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515204002-Binary.backup b/MikroMaster/20260515/20260515204002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0c57eba8e49fe613cc7f95592e0f06bed715faff GIT binary patch literal 242685 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260515/20260515204002-Config.rsc b/MikroMaster/20260515/20260515204002-Config.rsc new file mode 100644 index 0000000..a56c179 --- /dev/null +++ b/MikroMaster/20260515/20260515204002-Config.rsc @@ -0,0 +1,3409 @@ +# 2026-05-15 20:40:03 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add name=Bridge-LAN +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2442/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1420 name=WG +/interface list +add name=WAN +add name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/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/657/b0bd77b1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:15:02 15.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 +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 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add interface="ether1 - Unet" list=WAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test-IP +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=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=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=172.67.182.196 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=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=74.125.131.91 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.136 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.93 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.190 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.163.190 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.91 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.136 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.99 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=142.251.1.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 protocol=udp \ + src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 \ + src-address-list=NoWG +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address-list=VDSina new-routing-mark=\ + main passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address-list=NoVdsina \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + new-connection-mark=VPN_No_FastTrack routing-mark=To-VPN +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-list=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address-list=!Local-Net log-prefix=VPN-all new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" 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=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" protocol=tcp routing-mark=!To-VPN \ + 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=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="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +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 +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com +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 +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 +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 +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add disabled=yes forced-ip=89.110.101.17 interface=WG type=external +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260515/20260515204002-Diff-Config.rsc b/MikroMaster/history/20260515/20260515204002-Diff-Config.rsc new file mode 100644 index 0000000..a2e298d --- /dev/null +++ b/MikroMaster/history/20260515/20260515204002-Diff-Config.rsc @@ -0,0 +1,5 @@ +3110,3113d3109 +< 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=142.251.1.132 comment=googleusercontent.com list=RKN-dnsLookup +< add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup -- 2.52.0