From 32416b2e1b9c6a71209d40eeebcae2fe3d00ef0a Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 14:40:49 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 14:40:49. --- .../20260515/20260515144002-Binary.backup | Bin 0 -> 238812 bytes .../20260515/20260515144002-Config.rsc | 3391 +++++++++++++++++ .../20260515/20260515144002-Diff-Config.rsc | 119 + 3 files changed, 3510 insertions(+) create mode 100644 MikroMaster/20260515/20260515144002-Binary.backup create mode 100644 MikroMaster/20260515/20260515144002-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515144002-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515144002-Binary.backup b/MikroMaster/20260515/20260515144002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..45417b619a026ae7192a9049cba9c1cbb387bbff GIT binary patch literal 238812 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%0D!po6jG* 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

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