From 2131ed0565e52a6a699580a962a1c63ff8d29c3d Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 30 May 2026 14:20:38 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 30 14:20:38. --- .../20260530/20260530142002-Binary.backup | Bin 0 -> 259199 bytes .../20260530/20260530142002-Config.rsc | 3462 +++++++++++++++++ .../20260530/20260530142002-Diff-Config.rsc | 8 + 3 files changed, 3470 insertions(+) create mode 100644 MikroMaster/20260530/20260530142002-Binary.backup create mode 100644 MikroMaster/20260530/20260530142002-Config.rsc create mode 100644 MikroMaster/history/20260530/20260530142002-Diff-Config.rsc diff --git a/MikroMaster/20260530/20260530142002-Binary.backup b/MikroMaster/20260530/20260530142002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..b5ea1d446fce42c5c22d1d58d27915c71875de6c GIT binary patch literal 259199 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�<@xZ{z-z5 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

rs=Ao7=%pYx9h`W)Zjf=Ju$pK5 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 }yLbv^xYJ(w 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 MVz*eoc_T9emPZIbE&u=k literal 0 HcmV?d00001 diff --git a/MikroMaster/20260530/20260530142002-Config.rsc b/MikroMaster/20260530/20260530142002-Config.rsc new file mode 100644 index 0000000..4d80c8e --- /dev/null +++ b/MikroMaster/20260530/20260530142002-Config.rsc @@ -0,0 +1,3462 @@ +# 2026-05-30 14:20:03 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=1420 name=WG +/interface list +add name=WAN +add name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ipv6 dhcp-server +add address-pool=vadosV6 disabled=yes interface=Bridge-LAN name=masterIPV6 \ + prefix-pool=vados use-reconfigure=yes +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/663/fee06fc8\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 02:10:03 30.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" \ + disabled=yes dst-address-list=Trusted-NTP dst-port=123 \ + out-interface-list=WAN protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 protocol=udp \ + src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-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" \ + dst-address=!10.30.30.0/24 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" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" routing-mark=!To-VPN 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 src-address=\ + !10.30.30.0/24 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=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG src-address-list=!NoWG +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/20260530/20260530142002-Diff-Config.rsc b/MikroMaster/history/20260530/20260530142002-Diff-Config.rsc new file mode 100644 index 0000000..7b16ddf --- /dev/null +++ b/MikroMaster/history/20260530/20260530142002-Diff-Config.rsc @@ -0,0 +1,8 @@ +356c356 +< \n:global CommitId \"main/663/fee06fc8\";\r\ +--- +> \n:global CommitId \"main/661/8d6d2114\";\r\ +359c359 +< r: root, in 02:10:03 30.05.2026.\";\r\ +--- +> r: root, in 13:30:03 25.05.2026.\";\r\ -- 2.52.0