From df50159e9569978052ef9bbd42216a74842548da Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 8 Jun 2026 06:00:44 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 08 06:00:44. --- .../20260608/20260608060002-Binary.backup | Bin 0 -> 256929 bytes .../20260608/20260608060002-Config.rsc | 3413 +++++++++++++++++ .../20260608/20260608060002-Diff-Config.rsc | 54 + 3 files changed, 3467 insertions(+) create mode 100644 MikroMaster/20260608/20260608060002-Binary.backup create mode 100644 MikroMaster/20260608/20260608060002-Config.rsc create mode 100644 MikroMaster/history/20260608/20260608060002-Diff-Config.rsc diff --git a/MikroMaster/20260608/20260608060002-Binary.backup b/MikroMaster/20260608/20260608060002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..2c02abaab8e62367c7b6039702d4bb0307e37e9a GIT binary patch literal 256929 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

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