From dd26139bce3947057f88804e1db97d6975ffb32d Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 2 Jun 2026 00:40:15 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 02 00:40:15. --- .../20260602/20260602004001-Binary.backup | Bin 0 -> 259447 bytes .../20260602/20260602004001-Config.rsc | 3467 +++++++++++++++++ .../20260602/20260602004001-Diff-Config.rsc | 129 + 3 files changed, 3596 insertions(+) create mode 100644 MikroMaster/20260602/20260602004001-Binary.backup create mode 100644 MikroMaster/20260602/20260602004001-Config.rsc create mode 100644 MikroMaster/history/20260602/20260602004001-Diff-Config.rsc diff --git a/MikroMaster/20260602/20260602004001-Binary.backup b/MikroMaster/20260602/20260602004001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..ff445f30b7c995563eda266ea37372d126ff04d2 GIT binary patch literal 259447 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

Xbu1FG3~nxY%WiXrLeZqh05MVcU9(n-tNlnInPw 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

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