From 4480e61a4a24707ac53b1cff607b37be19933e6d Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 16 May 2026 16:40:49 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 16 16:40:49. --- .../20260516/20260516164002-Binary.backup | Bin 0 -> 246067 bytes .../20260516/20260516164002-Config.rsc | 3412 +++++++++++++++++ .../20260516/20260516164002-Diff-Config.rsc | 15 + 3 files changed, 3427 insertions(+) create mode 100644 MikroMaster/20260516/20260516164002-Binary.backup create mode 100644 MikroMaster/20260516/20260516164002-Config.rsc create mode 100644 MikroMaster/history/20260516/20260516164002-Diff-Config.rsc diff --git a/MikroMaster/20260516/20260516164002-Binary.backup b/MikroMaster/20260516/20260516164002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..94d02658935fb9dc6d06862a0b96b06aba750bf0 GIT binary patch literal 246067 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�ITRY%Uw<-S0^E8*)>nsN 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260516/20260516164002-Config.rsc b/MikroMaster/20260516/20260516164002-Config.rsc new file mode 100644 index 0000000..ccf4677 --- /dev/null +++ b/MikroMaster/20260516/20260516164002-Config.rsc @@ -0,0 +1,3412 @@ +# 2026-05-16 16:40:04 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add name=Bridge-LAN +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2442/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=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 interface="ether1 - Unet" list=WAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=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-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=\ + "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=\ + "!!!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 log-prefix=VPN-all 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" in-interface=WG \ + new-connection-mark=VPN_No_FastTrack routing-mark=To-VPN +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 \ + 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/20260516164002-Diff-Config.rsc b/MikroMaster/history/20260516/20260516164002-Diff-Config.rsc new file mode 100644 index 0000000..fecd017 --- /dev/null +++ b/MikroMaster/history/20260516/20260516164002-Diff-Config.rsc @@ -0,0 +1,15 @@ +3219,3224d3218 +< add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ +< 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 +3231a3226,3228 +> 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 +3233a3231,3233 +> add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ +> in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ +> to-ports=443 -- 2.52.0