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