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