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