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