From 9f50bee279563f720b38f366c625e1382023aff3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 15:40:37 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 15:40:37. --- .../20260515/20260515154002-Binary.backup | Bin 0 -> 242263 bytes .../20260515/20260515154002-Config.rsc | 3407 +++++++++++++++++ .../20260515/20260515154002-Diff-Config.rsc | 76 + 3 files changed, 3483 insertions(+) create mode 100644 MikroMaster/20260515/20260515154002-Binary.backup create mode 100644 MikroMaster/20260515/20260515154002-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515154002-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515154002-Binary.backup b/MikroMaster/20260515/20260515154002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..16aa37b5d9e546afa057813eecb4e4074ff90f53 GIT binary patch literal 242263 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

JFC|n7q*LM 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

=H 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 XjF($Hkl6tKRJMt~QFkoi?<80ThN!;D literal 0 HcmV?d00001 diff --git a/MikroMaster/20260515/20260515154002-Config.rsc b/MikroMaster/20260515/20260515154002-Config.rsc new file mode 100644 index 0000000..e826701 --- /dev/null +++ b/MikroMaster/20260515/20260515154002-Config.rsc @@ -0,0 +1,3407 @@ +# 2026-05-15 15:40:03 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add name=Bridge-LAN +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 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=1280 name=WG +/interface list +add name=WAN +add name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/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=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=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=64.233.164.105 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.106 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.147 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.99 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.103 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" log=yes log-prefix=\ + Filter23 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/20260515154002-Diff-Config.rsc b/MikroMaster/history/20260515/20260515154002-Diff-Config.rsc new file mode 100644 index 0000000..c6a48df --- /dev/null +++ b/MikroMaster/history/20260515/20260515154002-Diff-Config.rsc @@ -0,0 +1,76 @@ +3068d3067 +< add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +3071,3074d3069 +< add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +< add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +< add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +< add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +3077,3114d3071 +< 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=64.233.164.105 comment=googlevideo.com list=RKN-dnsLookup +< add address=64.233.164.106 comment=googlevideo.com list=RKN-dnsLookup +< add address=64.233.164.104 comment=googlevideo.com list=RKN-dnsLookup +< add address=64.233.164.147 comment=googlevideo.com list=RKN-dnsLookup +< add address=64.233.164.99 comment=googlevideo.com list=RKN-dnsLookup +< add address=64.233.164.103 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 +3137c3094 +< connection-state=established,related,new disabled=yes +--- +> connection-state=established,related,new +3178c3135 +< Filter23 src-address-list=!VDSina +--- +> Filter23 +3198,3200c3155,3156 +< add action=mark-routing chain=prerouting comment=\ +< "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ +< Unet new-routing-mark=main passthrough=no +--- +> add action=mark-routing chain=prerouting comment="Mark Routing main for Unet" \ +> dst-address-list=Unet new-routing-mark=main passthrough=no +3221c3177,3179 +< "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ +--- +> "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" disabled=yes dst-port=53 \ +> protocol=tcp src-address=10.30.30.0/24 to-ports=53 +> add action=redirect chain=dstnat disabled=yes dst-port=53 protocol=udp \ +3223,3224c3181,3182 +< 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="masquerade Default" ipsec-policy=\ +> out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +3227,3228d3184 +< add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ +< out,none out-interface="ether1 - Unet" -- 2.52.0