From 2c234ef0c8124c90593ff8ca132d069adbf24d75 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 2 Jun 2026 18:40:14 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 02 18:40:14. --- .../20260602/20260602184001-Binary.backup | Bin 0 -> 259987 bytes .../20260602/20260602184001-Config.rsc | 3467 +++++++++++++++++ .../20260602/20260602184001-Diff-Config.rsc | 13 + 3 files changed, 3480 insertions(+) create mode 100644 MikroMaster/20260602/20260602184001-Binary.backup create mode 100644 MikroMaster/20260602/20260602184001-Config.rsc create mode 100644 MikroMaster/history/20260602/20260602184001-Diff-Config.rsc diff --git a/MikroMaster/20260602/20260602184001-Binary.backup b/MikroMaster/20260602/20260602184001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..558a477710bebaea9b52adfe390ff09a6d2de830 GIT binary patch literal 259987 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 U5xDZnK*1vD9#9O{HnQOC5+w+aJpcdz literal 0 HcmV?d00001 diff --git a/MikroMaster/20260602/20260602184001-Config.rsc b/MikroMaster/20260602/20260602184001-Config.rsc new file mode 100644 index 0000000..7bf94ba --- /dev/null +++ b/MikroMaster/20260602/20260602184001-Config.rsc @@ -0,0 +1,3467 @@ +# 2026-06-02 18:40:02 by RouterOS 7.23 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add mtu=1598 name=Bridge-LAN port-cost-mode=short protocol-mode=stp +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface 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=LAN +add exclude=LAN name=WAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ipv6 dhcp-server +add address-pool=vadosV6 disabled=yes interface=Bridge-LAN name=masterIPV6 \ + prefix-pool=vados use-reconfigure=yes +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/670/7de640a1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 01.06.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add comment=Unet interface="ether1 - Unet" list=WAN +add interface=ether2 list=LAN +add interface=ether3 list=LAN +add interface=ether4 list=LAN +add interface=ether5 list=LAN +add interface=wlan1 list=LAN +add interface=wlan2 list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 disabled=yes \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC 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 disabled=yes interface=WG network=10.8.0.1 +/ip cloud +set ddns-enabled=yes +/ip cloud advanced +set use-local-address=yes +/ip dhcp-client +add default-route-distance=2 default-route-tables=main dhcp-options=\ + clientid,clientid_duid 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 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" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=195.133.25.16 comment="DNS Comss" disabled=yes name=dns.comss.one \ + type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test-IP +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=157.240.205.35 comment=facebook.com list=RKN-dnsLookup +add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=209.85.233.190 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.91 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.93 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.136 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.190 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.91 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.136 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.164.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + disabled=yes 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 \ + protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 \ + src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" 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="Default NAT" out-interface=\ + "ether1 - Unet" routing-mark=!To-VPN src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp src-address=\ + !10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" dst-port=2377 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +add action=masquerade chain=srcnat comment=WG disabled=yes dst-address-list=\ + !NoVdsina out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add forced-ip=146.120.64.211 interface="ether1 - Unet" type=external +add forced-ip=89.110.101.17 interface=WG type=external +add interface=lo type=internal +/ipv6 dhcp-client +add add-default-route=yes allow-reconfigure=yes custom-duid=\ + 00030001050000000000 custom-iana-id=0 custom-iapd-id=0 \ + default-route-tables=main:1 disabled=yes interface=WG pool-name=vados \ + pool-prefix-length=128 request=address,prefix use-interface-duid=yes \ + use-peer-dns=no +/ipv6 dhcp-server binding +add disabled=yes duid=0x000010001000000000 iaid=1 prefix-pool=vados server=\ + masterIPV6 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set ip-version=ipv4 mode=http +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add certificate=GTS-Root-R4 check-certificate=yes comment="doh-fallback, doh-u\ + rl=https://dns.google/dns-query, doh-cert=GTS Root R1, notify, name=Google\ + -DOH IPv4" disabled=yes dns-server=8.8.4.4 down-script="" host=dns.google \ + http-codes="" name="Google-DOH IPv4" port=443 record-type=NS src-address=\ + "" test-script="" type=dns up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" name="Cuad9-DOH IPv4" 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="" interval=10s name=\ + ns1.unet.ws test-script="" type=simple up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260602/20260602184001-Diff-Config.rsc b/MikroMaster/history/20260602/20260602184001-Diff-Config.rsc new file mode 100644 index 0000000..ec0ef16 --- /dev/null +++ b/MikroMaster/history/20260602/20260602184001-Diff-Config.rsc @@ -0,0 +1,13 @@ +2458,2459c2458,2460 +< add default-route-distance=2 default-route-tables=main dhcp-options=\ +< clientid,clientid_duid interface="ether1 - Unet" name=client1 +--- +> add add-default-route=special-classless default-route-distance=2 \ +> dhcp-options=hostname interface="ether1 - Unet" name=client1 \ +> use-broadcast=never use-peer-dns=no use-peer-ntp=no +2516,2517c2517,2518 +< set 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 +--- +> set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ +> doh-max-server-connections=20 servers=8.8.8.8 verify-doh-cert=yes -- 2.52.0