From da2b71c984379447dd42cfdf32b7a448978dbdc3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 17:00:22 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 17:00:22. --- .../20260515/20260515170002-Binary.backup | Bin 0 -> 242255 bytes .../20260515/20260515170002-Config.rsc | 3407 +++++++++++++++++ .../20260515/20260515170002-Diff-Config.rsc | 17 + 3 files changed, 3424 insertions(+) create mode 100644 MikroMaster/20260515/20260515170002-Binary.backup create mode 100644 MikroMaster/20260515/20260515170002-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515170002-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515170002-Binary.backup b/MikroMaster/20260515/20260515170002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..cf750ec5afd265287e30635b2653930d5cc87053 GIT binary patch literal 242255 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
SpjbiIxc{3IEe{W^o}rY&2Z&%ij=%=a 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ã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 PFXh^D##SfG?dzZ?4`@)v literal 0 HcmV?d00001 diff --git a/MikroMaster/20260515/20260515170002-Config.rsc b/MikroMaster/20260515/20260515170002-Config.rsc new file mode 100644 index 0000000..e4e27d3 --- /dev/null +++ b/MikroMaster/20260515/20260515170002-Config.rsc @@ -0,0 +1,3407 @@ +# 2026-05-15 17:00:03 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add name=Bridge-LAN +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 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: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1420 name=WG +/interface list +add name=WAN +add name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/657/b0bd77b1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:15:02 15.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add 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 disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=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=172.66.0.227 comment=x.com list=RKN-dnsLookup +add address=162.159.140.229 comment=twitter.com list=RKN-dnsLookup +add address=64.233.164.136 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.190 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.91 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.93 comment=youtube.com list=RKN-dnsLookup +add address=108.177.14.105 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.103 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.99 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.104 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.147 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.106 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.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.162.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.162.94 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.164.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-NTP +add action=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" \ + 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-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=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=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=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.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=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" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260515/20260515170002-Diff-Config.rsc b/MikroMaster/history/20260515/20260515170002-Diff-Config.rsc new file mode 100644 index 0000000..caf506f --- /dev/null +++ b/MikroMaster/history/20260515/20260515170002-Diff-Config.rsc @@ -0,0 +1,17 @@ +3071d3070 +< add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +3073c3072 +< add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +--- +> add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +3074a3074 +> add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +3105,3107d3104 +< add address=173.194.222.99 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +3108a3106 +> add address=173.194.222.99 comment=googlevideo.com list=RKN-dnsLookup +3110a3109,3110 +> add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup -- 2.52.0