From e7add71f3e7f153f4833eaf8a4d6ce73a520e7f4 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 17 May 2026 04:01:44 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 17 04:01:44. --- .../20260517/20260517040002-Binary.backup | Bin 0 -> 248499 bytes .../20260517/20260517040002-Config.rsc | 3439 +++++++++++++++++ .../20260517/20260517040002-Diff-Config.rsc | 4 + 3 files changed, 3443 insertions(+) create mode 100644 MikroMaster/20260517/20260517040002-Binary.backup create mode 100644 MikroMaster/20260517/20260517040002-Config.rsc create mode 100644 MikroMaster/history/20260517/20260517040002-Diff-Config.rsc diff --git a/MikroMaster/20260517/20260517040002-Binary.backup b/MikroMaster/20260517/20260517040002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..8a779441d5ef7437a5c2d113bec229269def52d4 GIT binary patch literal 248499 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

A8@PmNUoV95eCJdn_ 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 Y)Z+!oK{*CUZ=Y(;fpW`A#55Lk&v3X}VgLXD literal 0 HcmV?d00001 diff --git a/MikroMaster/20260517/20260517040002-Config.rsc b/MikroMaster/20260517/20260517040002-Config.rsc new file mode 100644 index 0000000..5a0f78e --- /dev/null +++ b/MikroMaster/20260517/20260517040002-Config.rsc @@ -0,0 +1,3439 @@ +# 2026-05-17 04:00:05 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add mtu=1598 name=Bridge-LAN port-cost-mode=short protocol-mode=stp +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2442/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 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 +/ipv6 dhcp-server +add address-pool=vadosV6 disabled=yes interface=Bridge-LAN name=masterIPV6 \ + prefix-pool=vados use-reconfigure=yes +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/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 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add comment=Unet interface="ether1 - Unet" list=WAN +add interface=ether2 list=LAN +add interface=ether3 list=LAN +add interface=ether4 list=LAN +add interface=ether5 list=LAN +add interface=wlan1 list=LAN +add interface=wlan2 list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/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-connection chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-connection-mark=no-mark passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-connection-mark=no-mark passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-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 new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ + VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" 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=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp 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="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment=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=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 \ + out-interface=WG +add action=masquerade chain=srcnat comment="masquerade Default" \ + in-interface-list=LAN out-interface="ether1 - Unet" +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 +/ipv6 dhcp-client +add add-default-route=yes allow-reconfigure=yes custom-duid=\ + 00030001050000000000 custom-iana-id=0 custom-iapd-id=0 \ + default-route-tables=main:1 disabled=yes interface=WG pool-name=vados \ + pool-prefix-length=128 request=address,prefix use-interface-duid=yes \ + use-peer-dns=no +/ipv6 dhcp-server binding +add disabled=yes duid=0x000010001000000000 iaid=1 prefix-pool=vados server=\ + masterIPV6 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260517/20260517040002-Diff-Config.rsc b/MikroMaster/history/20260517/20260517040002-Diff-Config.rsc new file mode 100644 index 0000000..bc3cf73 --- /dev/null +++ b/MikroMaster/history/20260517/20260517040002-Diff-Config.rsc @@ -0,0 +1,4 @@ +3051c3051 +< add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +--- +> add address=10.30.30.33 comment=NUC list=NoWG -- 2.52.0