From fb52363df6391083fdc5aa964b778ecb9eb45050 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 16 May 2026 17:20:44 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 16 17:20:43. --- .../20260516/20260516172001-Binary.backup | Bin 0 -> 246997 bytes .../20260516/20260516172001-Config.rsc | 3425 +++++++++++++++++ .../20260516/20260516172001-Diff-Config.rsc | 67 + 3 files changed, 3492 insertions(+) create mode 100644 MikroMaster/20260516/20260516172001-Binary.backup create mode 100644 MikroMaster/20260516/20260516172001-Config.rsc create mode 100644 MikroMaster/history/20260516/20260516172001-Diff-Config.rsc diff --git a/MikroMaster/20260516/20260516172001-Binary.backup b/MikroMaster/20260516/20260516172001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..db2f10295072e1a160da3f430119d113d2171879 GIT binary patch literal 246997 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

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