From 0c747b8744536562d9c0672bb0b480672a786a11 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 12:40:23 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 12:40:23. --- .../20260515/20260515124002-Binary.backup | Bin 0 -> 241669 bytes .../20260515/20260515124002-Config.rsc | 3405 +++++++++++++++++ .../20260515/20260515124002-Diff-Config.rsc | 71 + 3 files changed, 3476 insertions(+) create mode 100644 MikroMaster/20260515/20260515124002-Binary.backup create mode 100644 MikroMaster/20260515/20260515124002-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515124002-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515124002-Binary.backup b/MikroMaster/20260515/20260515124002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..6d1546bc072975a9e35aac609f6161e8f62abe7c GIT binary patch literal 241669 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%0DFSYIkC?CDXs-mPHY`Ez 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

Gn)my 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%0Am)EJ!vKU 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 B;uHV? literal 0 HcmV?d00001 diff --git a/MikroMaster/20260515/20260515124002-Config.rsc b/MikroMaster/20260515/20260515124002-Config.rsc new file mode 100644 index 0000000..a20ad14 --- /dev/null +++ b/MikroMaster/20260515/20260515124002-Config.rsc @@ -0,0 +1,3405 @@ +# 2026-05-15 12:40:03 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add name=Bridge-LAN +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=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 +/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/649/998f9ca0\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 12:10:03 15.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\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 \"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=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$aR\ + ecord, 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# /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:20: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" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add interface="ether1 - Unet" list=WAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +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 +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 +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=iCloud-Mail +add address=smtp.mail.me.com.akadns.net comment=smtp.mail.me.com.akadns.net \ + list=iCloud-Mail +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=Trusted-VPN +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!!!" disabled=yes 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=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +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=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.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.3.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=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=172.66.164.200 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=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +add address=172.66.0.227 comment=x.com list=RKN-dnsLookup +add address=162.159.140.229 comment=twitter.com list=RKN-dnsLookup +add address=64.233.164.91 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.93 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.136 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.190 comment=youtube.com list=RKN-dnsLookup +add address=142.250.150.99 comment=googleapis.com list=RKN-dnsLookup +add address=142.250.150.104 comment=googleapis.com list=RKN-dnsLookup +add address=142.250.150.147 comment=googleapis.com list=RKN-dnsLookup +add address=142.250.150.103 comment=googleapis.com list=RKN-dnsLookup +add address=142.250.150.105 comment=googleapis.com list=RKN-dnsLookup +add address=142.250.150.106 comment=googleapis.com list=RKN-dnsLookup +add address=209.85.233.91 comment=youtu.be list=RKN-dnsLookup +add address=209.85.233.190 comment=youtu.be list=RKN-dnsLookup +add address=209.85.233.136 comment=youtu.be list=RKN-dnsLookup +add address=209.85.233.93 comment=youtu.be list=RKN-dnsLookup +add address=64.233.164.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.103 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.106 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.99 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.105 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.73.120 comment=gstatic.com list=RKN-dnsLookup +add address=173.194.73.94 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.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=!10.30.30.0/24 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=!10.30.30.0/24 \ + 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=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN 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" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + 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" +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 VPN connections to exclude from FastTrack" in-interface=WG \ + new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address-list=NoVdsina \ + new-routing-mark=main src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test 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=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" disabled=yes dst-port=53 \ + protocol=tcp src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat disabled=yes dst-port=53 protocol=udp \ + src-address=10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="vk.com raw" \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="ok.ru raw" \ + content=ok.ru +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "comp-lenta.ru raw" content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="gov.ru raw" \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "r78.fssp.gov.ru raw" content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set graphs-plain=no rest-plain=no webfig-plain=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add disabled=yes forced-ip=89.110.101.17 interface=WG type=external +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260515/20260515124002-Diff-Config.rsc b/MikroMaster/history/20260515/20260515124002-Diff-Config.rsc new file mode 100644 index 0000000..fff0965 --- /dev/null +++ b/MikroMaster/history/20260515/20260515124002-Diff-Config.rsc @@ -0,0 +1,71 @@ +348c348 +< \n:global CommitId \"main/649/998f9ca0\";\r\ +--- +> \n:global CommitId \"main/648/4ed2b672\";\r\ +351c351 +< r: root, in 12:10:03 15.05.2026.\";\r\ +--- +> r: root, in 12:05:02 15.05.2026.\";\r\ +2291a2292 +> \n \"kasparov.ru\"\r\ +2301a2303 +> \n \"fbcd.net\"\r\ +2303a2306 +> \n \"twimg.com\"\r\ +2308a2312 +> \n \"ytimg.com\"\r\ +2337,2338c2341,2342 +< \n :log error \"error when adding ip to list A record: \$aR\ +< ecord, address: \$newAddress domain: \$aItem\";\r\ +--- +> \n :log error \"error when adding ip to list: \$ListRKN add\ +> ress: \$newAddress domain: \$aItem\";\r\ +2344d2347 +< \n :local cnameAddress;\r\ +2357,2358d2359 +< \n :set cnameAddress [/ip dns cache all get \$aRecord d\ +< ata];\r\ +2360c2361 +< =\$cnameAddress comment=\$aItem;\r\ +--- +> =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ +2365,2367c2366,2367 +< \n :log error \"error when adding ip to list CNAME reco\ +< rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ +< tem.\";\r\ +--- +> \n :log error \"error when adding ip to list:\$ListRKN \ +> address: \$newAddress domain: \$aItem record: \$aRecord\";\r\ +3059d3058 +< add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +3061c3060 +< add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +--- +> add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +3062a3062 +> add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +3068,3069c3068,3069 +< add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +< add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +--- +> add address=8.47.69.10 comment=dou.ua list=RKN-dnsLookup +> add address=8.6.112.10 comment=dou.ua list=RKN-dnsLookup +3073d3072 +< add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +3074a3074 +> add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +3078c3078 +< add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +--- +> add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +3085c3085 +< add address=142.250.150.99 comment=googleapis.com list=RKN-dnsLookup +--- +> add address=142.250.150.105 comment=googleapis.com list=RKN-dnsLookup +3087d3086 +< add address=142.250.150.147 comment=googleapis.com list=RKN-dnsLookup +3089d3087 +< add address=142.250.150.105 comment=googleapis.com list=RKN-dnsLookup +3090a3089,3090 +> add address=142.250.150.147 comment=googleapis.com list=RKN-dnsLookup +> add address=142.250.150.99 comment=googleapis.com list=RKN-dnsLookup -- 2.52.0