From 214f98c8fb5f4032161483c4435cf1fa8ca06f79 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 17 May 2026 20:00:51 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 17 20:00:51. --- .../20260517/20260517200002-Binary.backup | Bin 0 -> 250950 bytes .../20260517/20260517200002-Config.rsc | 3439 +++++++++++++++++ .../20260517/20260517200002-Diff-Config.rsc | 6 + 3 files changed, 3445 insertions(+) create mode 100644 MikroMaster/20260517/20260517200002-Binary.backup create mode 100644 MikroMaster/20260517/20260517200002-Config.rsc create mode 100644 MikroMaster/history/20260517/20260517200002-Diff-Config.rsc diff --git a/MikroMaster/20260517/20260517200002-Binary.backup b/MikroMaster/20260517/20260517200002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..9e5b099b71f3d81c02195e807b84af630a171da2 GIT binary patch literal 250950 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

W&%}U$GpEGBejaTle!ikXp| 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

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