From d915dffaeb04b09b7b814d159782eb927a0f3e08 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 22 May 2026 19:00:40 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 22 19:00:40. --- .../20260522/20260522190001-Binary.backup | Bin 0 -> 252820 bytes .../20260522/20260522190001-Config.rsc | 3447 +++++++++++++++++ .../20260522/20260522190001-Diff-Config.rsc | 3 + 3 files changed, 3450 insertions(+) create mode 100644 MikroMaster/20260522/20260522190001-Binary.backup create mode 100644 MikroMaster/20260522/20260522190001-Config.rsc create mode 100644 MikroMaster/history/20260522/20260522190001-Diff-Config.rsc diff --git a/MikroMaster/20260522/20260522190001-Binary.backup b/MikroMaster/20260522/20260522190001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..d198b54d0d69fa0dbcfa25d64dc7a5ce8010c746 GIT binary patch literal 252820 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260522/20260522190001-Config.rsc b/MikroMaster/20260522/20260522190001-Config.rsc new file mode 100644 index 0000000..6fabf0f --- /dev/null +++ b/MikroMaster/20260522/20260522190001-Config.rsc @@ -0,0 +1,3447 @@ +# 2026-05-22 19:00:03 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: 5260/20-Ceee/ac/DP(18dBm), 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=1280 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/659/af48ca83\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 18.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 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC 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 +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" \ + disabled=yes 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" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ + 1380 out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn \ + tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" \ + in-interface-list=LAN out-interface="ether1 - Unet" +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=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG +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 +add action=dst-nat chain=dstnat dst-port=22 in-interface="ether1 - Unet" \ + protocol=tcp to-addresses=10.30.30.33 to-ports=22 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +/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=yes distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=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/20260522/20260522190001-Diff-Config.rsc b/MikroMaster/history/20260522/20260522190001-Diff-Config.rsc new file mode 100644 index 0000000..25ce4ac --- /dev/null +++ b/MikroMaster/history/20260522/20260522190001-Diff-Config.rsc @@ -0,0 +1,3 @@ +3270,3271d3269 +< add action=dst-nat chain=dstnat dst-port=22 in-interface="ether1 - Unet" \ +< protocol=tcp to-addresses=10.30.30.33 to-ports=22 -- 2.52.0