From 01c78175d970b9b0b497d748ac746007f154d183 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 30 May 2026 17:20:43 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 30 17:20:43. --- .../20260530/20260530172002-Binary.backup | Bin 0 -> 259506 bytes .../20260530/20260530172002-Config.rsc | 3462 +++++++++++++++++ .../20260530/20260530172002-Diff-Config.rsc | 8 + 3 files changed, 3470 insertions(+) create mode 100644 MikroMaster/20260530/20260530172002-Binary.backup create mode 100644 MikroMaster/20260530/20260530172002-Config.rsc create mode 100644 MikroMaster/history/20260530/20260530172002-Diff-Config.rsc diff --git a/MikroMaster/20260530/20260530172002-Binary.backup b/MikroMaster/20260530/20260530172002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..1143355042368d779b9065dedf7cb98cfcdb3c08 GIT binary patch literal 259506 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

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