From dc90b95e4c324b4dd006bfce533eeef83ac74705 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 8 Jun 2026 07:40:28 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 08 07:40:28. --- .../20260608/20260608074002-Binary.backup | Bin 0 -> 258433 bytes .../20260608/20260608074002-Config.rsc | 3445 +++++++++++++++++ .../20260608/20260608074002-Diff-Config.rsc | 45 + 3 files changed, 3490 insertions(+) create mode 100644 MikroMaster/20260608/20260608074002-Binary.backup create mode 100644 MikroMaster/20260608/20260608074002-Config.rsc create mode 100644 MikroMaster/history/20260608/20260608074002-Diff-Config.rsc diff --git a/MikroMaster/20260608/20260608074002-Binary.backup b/MikroMaster/20260608/20260608074002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..94d4ff8f7305e09af2c3b5e075888d4dc8536826 GIT binary patch literal 258433 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

}k;t5aWQ`_dCBY79 zi3D%9Jp2e4|ByN(YF+$P#16zSq+^B#{Q|4dxX8Cz>~eyx|YO059hQkzzd$*VX$L}OUb z4pos+>?RUae=uk+;Zp2gtzc|f>#=} z3#wGyDM%oEW~OvJPzarev)CRYBCi!5=DJToLn%M$Ye9f%SX z7A^sJ6@hr1_`0MA^5F6XXDpLj{D9x8#-1#!yxQ#oScs8>%M$|@z-5oV3$0>pH^tIX zX2M{rRm2>^G!I@Tem|c5fb%}cwb1It+TPyC8&TAABp=^s8qDJ9k+jR(ibISP1kTJ>a;FwYmp?m+9-9QbN5Xc&$(C;aaqgIXs-J8>od9!qX4d zC}iS}F3Qm*F5)lCXpr6K?*|(6D}xGd;yN}FFg-WPMgmYH zIZ%>Xe-NamdpDk4!H=ENf08-w24S!YJb`)LPvs~TEnVUv8}sr_F+}oYfKitBHok0- z5_uryz4aaArn=MAP(a^Qh6j*>O|l4)ryyZ^w9(56BN7It9y`xRY|sgFJd^$yT2u75 zsKZ65P8Tso)=|e3o5(a5w}1$VN3%{F=BB{rrQ`wapcv620^0k zUt0=}ylx*Ian9a%kn}Yq9SQ(#ugw~U?36YgANX<8f-FPjR5X}!otG3%X&7~KNmj|(bY8{2wwESYL8BJQ4$mx2u7J`cIGg1~~09osLkCT&i?3>xL zZs6=@o7QND*k?ZbqTWl`U@>~n$Nk#g+>^F=|I0cuQQ0_&Jy_rKC-=$zGSu-r0*GKl z2BmObsrS5fi#++a{n*TbbjdHqCL=||^u;gU`}Z)>(I@hL7A3YCpYOIlq~%B}5i)k5 z7fMxu$sO>u2xveY!;&@Po4g~LZwk~keBaDDYkEH7*^{~4xS2v{T`hM#67zqkIpqhc zrLCtcvXp3K`4(HNNs)(?#GQq$OI@oQa5-D$x*n?7wtc%;1Huk^zA&Ol|+6Bn| zeJ|PX)|i^(Ku3_6Vc$mX1PwA$0Byd(j6T;D)>*4ST|+d}5$A>brz4isBu$_@`V-s5 zSo=5fskj4YkYo`_5`ACx;Yyq#uxXLnnKiM?WdMQHh1Ebww9Leu`KIl`Ey4;dhdxb81~RKZGLFCb%jR z97lcPRk=%yJ~dJ^w$euPe$9_2YmHrnOfh~9p^+E`Spb>0h#9lckbM9mFin@AuRj0F zW4+82H-oNSfXWR-cl@q5j(jqv?xLvbuF{YjAn|vo0=?jn2S0U;hrB34r~5E9VK%Kb zV!X2b-fIw|?`LRe!gibJB)u9kxoo{1xc*3XdKSj+fJM<&-4pPQC2N~Gj8L9x`X&0d zoNC2_v;Vj{fjqUgF>evqE-H}S8z@Cg1?*imfj>!{uZYzL4gLN!=}&|$Prb*hf}??6KTw9_ zJ5*70C*=#q`^ep^`o`xoJkJnpR!L6sW|WJio}AeGjWv!)^;~Mh$`SD4%T)9C=%nFQTb(@Kmyw6kx|YL z{uGVYn!O1;;WiTl_n9f_+by7u7wuq5

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