From 85ffffb749077c16f1b820ccb8a526ed5afb0c2e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 13 Jun 2026 13:00:21 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 13 13:00:21. --- .../20260613/20260613130002-Binary.backup | Bin 0 -> 273041 bytes .../20260613/20260613130002-Config.rsc | 3604 +++++++++++++++++ .../20260613/20260613130002-Diff-Config.rsc | 8 + 3 files changed, 3612 insertions(+) create mode 100644 MikroMaster/20260613/20260613130002-Binary.backup create mode 100644 MikroMaster/20260613/20260613130002-Config.rsc create mode 100644 MikroMaster/history/20260613/20260613130002-Diff-Config.rsc diff --git a/MikroMaster/20260613/20260613130002-Binary.backup b/MikroMaster/20260613/20260613130002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..6757b81e058f910dd632c823ebd6592690a4ad68 GIT binary patch literal 273041 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 z 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

(;*JKo= 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260613/20260613130002-Config.rsc b/MikroMaster/20260613/20260613130002-Config.rsc new file mode 100644 index 0000000..13920d7 --- /dev/null +++ b/MikroMaster/20260613/20260613130002-Config.rsc @@ -0,0 +1,3604 @@ +# 2026-06-13 13:00:03 by RouterOS 7.23.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add dhcpv6-agent-circuit-id="\$(INTERFACE):\$(VID)" dhcpv6-agent-remote-id=\ + "\$(BRIDGEMAC)" name=Bridge-LAN port-cost-mode=short +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" loop-protect=off name=\ + "ether1 - Unet" rx-flow-control=auto tx-flow-control=auto +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 +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add disabled=yes listen-port=29185 mtu=1420 name=WG +/interface list +add name=LAN +add exclude=LAN name=WAN +add exclude=LAN include=WAN name=Internet +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys 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 +add dns-servers=10.30.30.81 name=reg.vados.ru 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-client option +add code=119 name=domain-search-list value="0x03'WORKGROUP'0x00" +add code=12 name=HostName value="\$(HOSTNAME)" +add code=61 name=DUID value=0x00030001488f5a8e1abc +add code=61 name=clientid +/ipv6 dhcp-server option +add code=119 name=domain-search-list value="0x03'WORKGROUP'0x00" +add code=12 name=HostName value="\$(HOSTNAME)" +add code=61 name=CLIENT_DUID +add code=61 name=CLIENT_MAC +/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/683/6160edd1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 11:50:03 12.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" +add dont-require-permissions=no name=IPv6-Settings owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + #############Script Settings##################\ + \n\ + \n:local \"IF-TUN\" \"6to4-tun\"\ + \n:local \"IF-LOC\" \"Bridge-LAN\"\ + \n:local \"POOL-6TO4\" \"poolV6-local\"\ + \n:local \"force-update\" false\ + \n############ use then static ip #######################\ + \n:local \"lease-address\" [/ip address get [find interface=\$\"IF-LOC\"] \ + address]\ + \n#:local \"interface\" \"ext\"\ + \n:local bound 0\ + \n\ + \n###############################################\ + \n\ + \n:local 6to4prefix do={\ + \n :global dec2hex\ + \n :local ipv4 \$1\ + \n :local ipv6 \"2002:\"\ + \n :for i from=0 to=2 step=1 do={ \ + \n :if ( \$i = 2) do={\ + \n :set ipv6 (\$ipv6.\":\")\ + \n }\ + \n :local fp [:find \$ipv4 \".\"]\ + \n :if ( \$fp > 0 ) do={\ + \n :set ipv6 (\$ipv6.[\$dec2hex [:pick \$ipv4 0 \$fp]])\ + \n :set ipv4 [:pick \$ipv4 (\$fp + 1 ) [:len \$ipv4]]\ + \n }\ + \n }\ + \n :return (\$ipv6.[\$dec2hex \$ipv4])\ + \n}\ + \n:local \"str_replace\" do={\ + \n :local \"str-pos\" [:find \$1 \$2]\ + \n :local \"str-len\" [:len \$2]\ + \n :local str \"\"\ + \n :local rest \$1\ + \n :while (\$\"str-pos\" >= 0) do={\ + \n :local t [:pick \$rest 0 \$\"str-pos\"]\ + \n :if ( \$4 > 0 ) do={\ + \n :for i from=1 to=(\$4 - [:len \$t]) step=1 do={\ + \n :set str (\$str.\$5)\ + \n }\ + \n }\ + \n :set str (\$str.\$t.\$3)\ + \n :set rest [:pick \$rest (\$\"str-pos\"+\$\"str-len\") [:len \$re\ + st]]\ + \n :set \"str-pos\" [:find \$rest \$2]\ + \n }\ + \n :return (\$str.\$rest)\ + \n}\ + \n\ + \n:if (\$bound=1) do={\ + \n :local t [:find \$\"lease-address\" \"/\"]\ + \n\ + \n :if ( \$t >= 0 ) do={\ + \n :set \"lease-address\" [:pick \$\"lease-address\" 0 \$t]\ + \n }\ + \n\ + \n :if ( [/interface 6to4 print count-only where name=\$\"IF-TUN\"] = 0\ + ) do={\ + \n /interface 6to4 add !keepalive local-address=\$\"lease-address\"\ + \_mtu=1280 name=\$\"IF-TUN\" remote-address=10.30.30.0\ + \n :set \"force-update\" true\ + \n }\ + \n\ + \n :local \"IPv4-TUN\" [/interface 6to4 get [find name=\$\"IF-TUN\"] lo\ + cal-address];\ + \n\ + \n :if ( \$\"lease-address\" != \$\"IPv4-TUN\" || \$\"force-update\" = \ + true) do={\ + \n /interface 6to4 set [find name=\$\"IF-TUN\"] local-address=\$\"l\ + ease-address\"\ + \n /ipv6 address remove [find interface=\$\"IF-TUN\"]\ + \n /ipv6 address remove [find interface=\$\"IF-LOC\"]\ + \n /ipv6 route remove [find gateway ~ \$\"IF-TUN\" and dst-address=\ + \"::/0\"]\ + \n :local \"pool-prefix\" [\$6to4prefix \$\"lease-address\"]\ + \n :if ( [/ipv6 pool print count-only where name=\$\"POOL-6TO4\"] =\ + \_0) do={ \ + \n /ipv6 pool add name=\$\"POOL-6TO4\" prefix=(\$\"pool-prefix\ + \".\":1::/64\") prefix-length=64\ + \n } else={\ + \n /ipv6 pool set [/ipv6 pool find where name=\$\"POOL-6TO4\"] \ + prefix=(\$\"pool-prefix\".\":1::/64\")\ + \n }\ + \n /ipv6 address add address=(\$\"pool-prefix\".\"::\".[\$MAC2EUI64\ + \_[/interface get [find name=\$\"interface\"] mac-address]].\"/3\") interf\ + ace=\$\"IF-TUN\" advertise=no\ + \n /ipv6 address add eui-64=yes from-pool=\$\"POOL-6TO4\" interface\ + =\$\"IF-LOC\" advertise=yes\ + \n /ipv6 route add dst-address=::/0 gateway=(\"::10.30.30.81%\".\$\ + \"IF-TUN\")\ + \n :local t [/ipv6 address get [find interface=\$\"IF-LOC\"] addres\ + s]\ + \n :set t [:pick \$t 0 [:find \$t \"/\"]]\ + \n :if ( [/ipv6 dhcp-server option print count-only where name=DNS]\ + \_= 0) do={\ + \n /ipv6 dhcp-server option add code=23 name=DNS value=(\"0x\".\ + [\$\"str_replace\" \$t \":\" \"\" 4 \"0\"])\ + \n } else={\ + \n /ipv6 dhcp-server option set [/ipv6 dhcp-server option find \ + where name=DNS] value=(\"0x\".[\$\"str_replace\" \$t \":\" \"\" 4 \"0\"])\ + \n }\ + \n :if ( [/ipv6 dhcp-server print count-only where interface=\$\"IF\ + -LOC\"] = 0) do={\ + \n /ipv6 dhcp-server add address-pool=\$\"POOL-6TO4\" dhcp-opti\ + on=DNS interface=\$\"IF-LOC\" lease-time=1d name=\$\"IF-LOC\"\ + \n }\ + \n :if ( [ipv6 nd print count-only where interface=\$\"IF-LOC\"] = \ + 0) do={\ + \n /ipv6 nd add advertise-dns=no interface=\$\"IF-LOC\" other-c\ + onfiguration=yes\ + \n }\ + \n }\ + \n}" +add dont-require-permissions=no name=IPv6-GlobalFunc owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global MAC2EUI64 do={\ + \n :local EUI64 \"\"\ + \n :local MAC \$1\ + \n :local HEX2DEC \"0123456789ABCDEF\"\ + \n :for i from=0 to=5 step=1 do={\ + \n :if ( \$i = 0 ) do={\ + \n :set EUI64 [:pick \$MAC 0]\ + \n :set EUI64 (\$EUI64.[:tostr [:pick \$\"HEX2DEC\" ([:find \$\ + \"HEX2DEC\" [:pick \$MAC 1]] ^ 2)]])\ + \n }\ + \n :if ( \$i = 1 || \$i = 3) do={\ + \n :set EUI64 (\$EUI64.\":\")\ + \n }\ + \n :if ( \$i = 2 ) do={\ + \n :set EUI64 (\$EUI64.\"FF:FE\")\ + \n }\ + \n :if ( [:find \$MAC \":\"] = 2 ) do={\ + \n :set MAC [:pick \$MAC 3 [:len \$MAC]]\ + \n :set EUI64 (\$EUI64.[:pick \$MAC 0 2])\ + \n }\ + \n }\ + \n :return (\$EUI64)\ + \n}\ + \n\ + \n:global dec2hex do={\ + \n :local hex \"\"\ + \n :local dec [:tonum \$1]\ + \n :for i from=0 to=4 step=4 do={\ + \n :set hex ([:pick \"0123456789ABCDEF\" ((\$dec>>\$i)&0xf) (((\$de\ + c>>\$i)&0xf)+1)].\$hex)\ + \n }\ + \n :return ([:tostr \$hex])\ + \n}" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/ip smb +set enabled=no interfaces=lo +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 trusted-dhcpv6=yes trusted-ra=yes +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN lldp-med=no lldp-poe-power=no protocol="" +/ip settings +set accept-redirects=yes ipv4-multipath-hash-policy=l4 max-neighbor-entries=\ + 8192 +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + max-neighbor-entries=8192 multipath-hash-policy=l4 +/interface detect-internet +set detect-interface-list=Internet internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=0.0.0.0/0 disabled=yes \ + interface=WG name=MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +add allowed-address=0.0.0.0/0 client-address=10.8.0.2/24 \ + client-allowed-address=0.0.0.0/0 client-dns=8.8.8.8 client-endpoint=\ + 146.120.64.211 client-keepalive=10s client-listen-port=33821 disabled=yes \ + interface=WG name=GitHub persistent-keepalive=10s public-key=\ + "HTofQ0KtUsZij7zFn0F72r8oatxGn/el6bzLhM9El1g=" responder=yes +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC interfaces=wlan2,wlan1 lock-to-caps-man=yes +/ip address +add address=10.8.0.2 disabled=yes interface=WG network=10.8.0.0 +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +/ip cloud +set update-time=no +/ip dhcp-client +add default-route-tables=main dhcp-options=hostname,clientid,clientid_duid \ + interface="ether1 - Unet" name=client1 use-broadcast=never use-peer-ntp=\ + no +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 +/ip dns adlist +add disabled=yes url=https://ros.vados.ru/dns/vados.ru.local +add disabled=yes url=https://ros.vados.ru/dns/30.30.10.in-addr.arpa +/ip dns static +add comment="Local DNS server for vados.ru" ns=10.30.30.81 regexp=*.vados.ru \ + type=NS +add comment="*.vados.ru Regexp" forward-to=10.30.30.81 regexp=\ + "\".*\\\\.vados\\\\.ru\"" type=FWD +add comment="*.30.30.10.in-addr.arpa Regexp" forward-to=10.30.30.81 regexp=\ + "\".*\\\\.30\\\\.30\\\\.10\\\\.in-addr\\\\.arpa" type=FWD +add address=10.30.30.81 comment=NS.vados.ru.local name=ns.vados.ru.local \ + type=A +add comment="DNS ns.vados.ru.local" match-subdomain=yes name=vados.ru ns=\ + ns.vados.ru.local type=NS +add address=10.30.30.33 comment=reg.vados.ru name=reg.vados.ru type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" match-subdomain=yes name=\ + dns.google type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test-IP +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=amster disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=10.30.30.30 comment=miller disabled=yes list=NoWG +add address=10.30.30.33 comment="Direct connet to DNS servers" list=\ + Direct-DNS +/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="ether1 - Unet" 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="ether1 - Unet" 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 \ + in-interface="ether1 - Unet" protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=udp +add action=accept chain=input comment="tcp Accept input DNS queries from LAN" \ + disabled=yes dst-port=53 in-interface=Bridge-LAN protocol=tcp \ + src-address=10.30.30.0/24 +add action=accept chain=input comment="udp Accept input DNS queries" \ + disabled=yes dst-port=53 in-interface=Bridge-LAN protocol=udp \ + src-address=10.30.30.0/24 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid in-interface="ether1 - Unet" src-address=\ + !10.30.30.0/24 +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +add action=accept chain=input protocol=icmp +add action=accept chain=input connection-state=established +add action=accept chain=input connection-state=related +add action=drop chain=input in-interface-list=!LAN +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ + 1380 out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn \ + tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment="udp Redirect DNS in NAT" disabled=\ + yes dst-port=53 protocol=udp src-address=10.30.30.0/24 to-addresses=\ + 10.30.30.81 to-ports=53 +add action=redirect chain=dstnat comment="tcp Redirect DNS in NAT" disabled=\ + yes dst-port=53 protocol=tcp src-address=10.30.30.0/24 to-addresses=\ + 10.30.30.81 to-ports=53 +add action=dst-nat chain=dstnat disabled=yes dst-port=44333 in-interface=\ + "ether1 - Unet" protocol=udp src-address=!10.30.30.0/24 to-addresses=\ + 10.30.30.33 to-ports=44333 +add action=dst-nat chain=dstnat dst-port=44333 in-interface="ether1 - Unet" \ + protocol=tcp to-addresses=10.30.30.33 to-ports=44333 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG src-address-list=!NoWG +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp src-address=\ + !10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" disabled=yes \ + dst-port=2904 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru disabled=yes dst-port=\ + 5000 in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" disabled=yes dst-port=\ + 2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=TRUSTED to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add forced-ip=146.120.64.211 interface="ether1 - Unet" type=external +add forced-ip=89.110.101.17 interface=WG type=external +add interface=lo type=internal +/ipv6 dhcp-client +add add-default-route=yes disabled=yes interface=*F rapid-commit=no request=\ + info use-interface-duid=yes validate-server-duid=no +/ipv6 dhcp-server option sets +add name=domain-search-set options=domain-search-list +add name="=\"Client ID\"" options=HostName +/ipv6 nd +set [ find default=yes ] advertise-dns=yes disabled=yes interface=Bridge-LAN \ + managed-address-configuration=yes other-configuration=yes pref64=::/64 +/ipv6 nd prefix +add autonomous=no disabled=yes interface=Bridge-LAN on-link=no prefix=none +/ipv6 nd prefix default +set dhcp6-pd-preferred=yes +/ipv6 nd proxy +add disabled=yes interface=lo +/ipv6 nd settings +set router-advertisement-route-distance=100 +/routing settings +set single-process=no +/system clock +set time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set check-certificate=yes-without-crl +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add certificate=DigiCert-Global-Root-CA check-certificate=no comment="doh, doh\ + -url=https://security.cloudflare-dns.com/dns-query, notify, name=CloudFlar\ + e-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 http-codes="" \ + interval=10s name="CloudFlare-doh IPv4 1" port=443 test-script="" type=\ + https-get up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + name="CloudFlare-doh IPv4" port=443 test-script="" type=https-get \ + up-script="" +add comment="dns, notify, name=Google-DNS IPv4" disabled=yes dns-server=\ + 8.8.8.8 down-script="" host=dns.google http-codes="" name=\ + "Google-DNS IPv4" test-script="" type=dns up-script="" +add certificate=GTS-Root-R4 check-certificate=yes comment="doh-fallback, doh-u\ + rl=https://dns.google/dns-query, doh-cert=GTS Root R1, notify, name=Google\ + -DOH IPv4" disabled=yes dns-server=8.8.4.4 down-script="" host=dns.google \ + http-codes="" name="Google-DOH IPv4" port=443 record-type=NS src-address=\ + "" test-script="" type=dns up-script="" +add comment="dns-fallback, notify, name=Cuad9-DOH IPv4" disabled=yes \ + dns-server=9.9.9.9 down-script="" host=dns9.quad9.net http-codes="" \ + interval=10s name="Cuad9-DOH IPv4" src-address=146.120.64.211 \ + test-script="" timeout=800ms type=dns up-script="" +add certificate=DigiCert-Assured-ID-Root-CA comment="doh-fallback, doh-url=htt\ + ps://dns.quad9.net/dns-query, name=Cuad9-DOH IPv4" disabled=yes \ + down-script="" host=149.112.112.112 http-codes="" interval=10s name=\ + "Cuad9-DOH IPv4" port=443 test-script="" type=https-get up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" interval=10s name=\ + ns1.unet.ws test-script="" type=simple up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260613/20260613130002-Diff-Config.rsc b/MikroMaster/history/20260613/20260613130002-Diff-Config.rsc new file mode 100644 index 0000000..40c20c8 --- /dev/null +++ b/MikroMaster/history/20260613/20260613130002-Diff-Config.rsc @@ -0,0 +1,8 @@ +356c356 +< \n:global CommitId \"main/683/6160edd1\";\r\ +--- +> \n:global CommitId \"main/680/f2c803f5\";\r\ +359c359 +< r: root, in 11:50:03 12.06.2026.\";\r\ +--- +> r: root, in 21:20:03 11.06.2026.\";\r\ -- 2.52.0