From 87bd84a5b4e935fa2b55e872ded4f1d8de18b8a7 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 6 Jun 2026 14:20:27 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 06 14:20:27. --- .../20260606/20260606142002-Binary.backup | Bin 0 -> 253570 bytes .../20260606/20260606142002-Config.rsc | 3391 +++++++++++++++++ .../20260606/20260606142002-Diff-Config.rsc | 30 + 3 files changed, 3421 insertions(+) create mode 100644 MikroMaster/20260606/20260606142002-Binary.backup create mode 100644 MikroMaster/20260606/20260606142002-Config.rsc create mode 100644 MikroMaster/history/20260606/20260606142002-Diff-Config.rsc diff --git a/MikroMaster/20260606/20260606142002-Binary.backup b/MikroMaster/20260606/20260606142002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..c3d868be18b6d2e618d50d44bbeed86b5324ab90 GIT binary patch literal 253570 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�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%0DPO6d2TCH*GGb!W)mc^oZdl1yC#6E;)Pea`C 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260606/20260606142002-Config.rsc b/MikroMaster/20260606/20260606142002-Config.rsc new file mode 100644 index 0000000..7a89f1e --- /dev/null +++ b/MikroMaster/20260606/20260606142002-Config.rsc @@ -0,0 +1,3391 @@ +# 2026-06-06 14:20:02 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 +/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/670/7de640a1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 01.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 +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 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 default-route-tables=main interface="ether1 - Unet" name=client1 \ + 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 mdns-repeat-ifaces="ether1 - Unet" servers=\ + 8.8.4.4,8.8.8.8 +/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 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=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 +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 +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 +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 +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=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="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" 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/20260606/20260606142002-Diff-Config.rsc b/MikroMaster/history/20260606/20260606142002-Diff-Config.rsc new file mode 100644 index 0000000..b5f0270 --- /dev/null +++ b/MikroMaster/history/20260606/20260606142002-Diff-Config.rsc @@ -0,0 +1,30 @@ +9,10c9,11 +< 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=ether1 ] arp=proxy-arp comment="WAN - Unet" \ +> loop-protect=off name="ether1 - Unet" rx-flow-control=auto \ +> tx-flow-control=auto +2409a2411 +> # ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +2411a2414 +> # ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +2413a2417 +> # ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +2415a2420 +> # ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +2417a2423 +> # ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +2502,2503c2508 +< doh-max-server-connections=20 mdns-repeat-ifaces="ether1 - Unet" servers=\ +< 8.8.4.4,8.8.8.8 +--- +> doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +3181,3183d3185 +< 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 +3191a3194,3196 +> add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ +> disabled=yes dst-port=80 in-interface="ether1 - Unet" protocol=tcp \ +> to-addresses=10.30.30.33 to-ports=80 -- 2.52.0