From 7be96d87d60967be9eac223b6444acbc4998f10d Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 16 May 2026 20:20:44 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 16 20:20:44. --- .../20260516/20260516202001-Binary.backup | Bin 0 -> 248209 bytes .../20260516/20260516202001-Config.rsc | 3439 +++++++++++++++++ .../20260516/20260516202001-Diff-Config.rsc | 4 + 3 files changed, 3443 insertions(+) create mode 100644 MikroMaster/20260516/20260516202001-Binary.backup create mode 100644 MikroMaster/20260516/20260516202001-Config.rsc create mode 100644 MikroMaster/history/20260516/20260516202001-Diff-Config.rsc diff --git a/MikroMaster/20260516/20260516202001-Binary.backup b/MikroMaster/20260516/20260516202001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..37b34435b69f1558ae634dc8b6b3f962ae8785c9 GIT binary patch literal 248209 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�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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260516/20260516202001-Config.rsc b/MikroMaster/20260516/20260516202001-Config.rsc new file mode 100644 index 0000000..37e0f0c --- /dev/null +++ b/MikroMaster/20260516/20260516202001-Config.rsc @@ -0,0 +1,3439 @@ +# 2026-05-16 20:20:02 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 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 disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 protocol=udp \ + src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-connection-mark=no-mark passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-connection-mark=no-mark passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address-list=!Local-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ + VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=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=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG +add action=masquerade chain=srcnat comment="masquerade Default" \ + in-interface-list=LAN out-interface="ether1 - Unet" +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/20260516/20260516202001-Diff-Config.rsc b/MikroMaster/history/20260516/20260516202001-Diff-Config.rsc new file mode 100644 index 0000000..e061098 --- /dev/null +++ b/MikroMaster/history/20260516/20260516202001-Diff-Config.rsc @@ -0,0 +1,4 @@ +27c27 +< # channel: 2442/20-Ce/gn(18dBm), SSID: vados, local forwarding +--- +> # channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding -- 2.52.0