From 98d992386f7282cdcdaec4862f2e788c8fd8d9e8 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Wed, 20 May 2026 17:41:05 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 20 17:41:05. --- .../20260520/20260520174002-Binary.backup | Bin 0 -> 251985 bytes .../20260520/20260520174002-Config.rsc | 3445 +++++++++++++++++ .../20260520/20260520174002-Diff-Config.rsc | 4 + 3 files changed, 3449 insertions(+) create mode 100644 MikroMaster/20260520/20260520174002-Binary.backup create mode 100644 MikroMaster/20260520/20260520174002-Config.rsc create mode 100644 MikroMaster/history/20260520/20260520174002-Diff-Config.rsc diff --git a/MikroMaster/20260520/20260520174002-Binary.backup b/MikroMaster/20260520/20260520174002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..053ae1ea0abd8b02322114a65479e942b7559de3 GIT binary patch literal 251985 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

aIE;$~7AtSN++6**-ig`YwOre!(|ewKu~PNwA+ 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

)JpgEZPp%8#TsV|345Y;Hg# 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

Um$Ax5&__eq>t~o7J)_bKKkwq0gCM2$a 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 atM+<^?&L7VrH+galhw1SSI>y6K-vo^=IZAF literal 0 HcmV?d00001 diff --git a/MikroMaster/20260520/20260520174002-Config.rsc b/MikroMaster/20260520/20260520174002-Config.rsc new file mode 100644 index 0000000..29def76 --- /dev/null +++ b/MikroMaster/20260520/20260520174002-Config.rsc @@ -0,0 +1,3445 @@ +# 2026-05-20 17:40:04 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: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=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/659/af48ca83\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 18.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=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=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=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=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=74.125.131.91 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.136 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.93 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.190 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.163.190 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.91 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.136 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.99 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=142.251.1.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 +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" 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 dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + 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-connection chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-connection-mark=no-mark passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-connection-mark=no-mark passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +add action=mark-routing chain=prerouting comment=\ + "!!!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-list=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address-list=!Local-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +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" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" \ + in-interface-list=LAN out-interface="ether1 - Unet" +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp 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="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment=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=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=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG +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 +/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/20260520/20260520174002-Diff-Config.rsc b/MikroMaster/history/20260520/20260520174002-Diff-Config.rsc new file mode 100644 index 0000000..e061098 --- /dev/null +++ b/MikroMaster/history/20260520/20260520174002-Diff-Config.rsc @@ -0,0 +1,4 @@ +27c27 +< # channel: 2442/20-Ce/gn(18dBm), SSID: vados, local forwarding +--- +> # channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding -- 2.52.0