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