From 126c69f71e913d9549c28e658ffcdf51b4eaf3ed Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 26 May 2026 17:20:40 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 26 17:20:40. --- .../20260526/20260526172001-Binary.backup | Bin 0 -> 258431 bytes .../20260526/20260526172001-Config.rsc | 3462 +++++++++++++++++ .../20260526/20260526172001-Diff-Config.rsc | 14 + 3 files changed, 3476 insertions(+) create mode 100644 MikroMaster/20260526/20260526172001-Binary.backup create mode 100644 MikroMaster/20260526/20260526172001-Config.rsc create mode 100644 MikroMaster/history/20260526/20260526172001-Diff-Config.rsc diff --git a/MikroMaster/20260526/20260526172001-Binary.backup b/MikroMaster/20260526/20260526172001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..14e03b494b22e98190fba3f04fee403b560849e4 GIT binary patch literal 258431 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%0Dl4C8FQ;9x|85Y>=JB;yJMe2yisVX1m2HQB* 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

Q&=EzFwaEL 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

`kE*(P${a`b(GykO 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260526/20260526172001-Config.rsc b/MikroMaster/20260526/20260526172001-Config.rsc new file mode 100644 index 0000000..97acbff --- /dev/null +++ b/MikroMaster/20260526/20260526172001-Config.rsc @@ -0,0 +1,3462 @@ +# 2026-05-26 17:20:04 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add mtu=1598 name=Bridge-LAN port-cost-mode=short protocol-mode=stp +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 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/661/8d6d2114\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 25.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 +add address=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +/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" \ + disabled=yes dst-address-list=Trusted-NTP dst-port=123 \ + out-interface-list=WAN protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 protocol=udp \ + src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output 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=VPN_No_FastTrack src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!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="Mark Routing main for NoWG" \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 \ + src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address-list=!Local-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" 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="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment=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=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" dst-port=2377 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no 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/20260526/20260526172001-Diff-Config.rsc b/MikroMaster/history/20260526/20260526172001-Diff-Config.rsc new file mode 100644 index 0000000..13ea9cd --- /dev/null +++ b/MikroMaster/history/20260526/20260526172001-Diff-Config.rsc @@ -0,0 +1,14 @@ +3155c3155 +< connection-state=established,related,new +--- +> connection-state=established,related,new disabled=yes +3212c3212 +< "Mark Routing main for NoVdsina" disabled=yes dst-address=!10.30.30.0/24 \ +--- +> "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ +3231,3232c3231,3232 +< "Mark VPN connections to exclude from FastTrack" disabled=yes \ +< new-connection-mark=VPN_No_FastTrack +--- +> "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ +> VPN_No_FastTrack -- 2.52.0