From 8f24e2d64490474f23f5d6a5a8975c18865fee5c Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 18 Jun 2026 11:24:53 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 18 11:24:53. --- .../20260618/20260618112002-Binary.backup | Bin 0 -> 273800 bytes .../20260618/20260618112002-Config.rsc | 3669 +++++++++++++++++ .../20260618/20260618112002-Diff-Config.rsc | 2 + 3 files changed, 3671 insertions(+) create mode 100644 MikroMaster/20260618/20260618112002-Binary.backup create mode 100644 MikroMaster/20260618/20260618112002-Config.rsc create mode 100644 MikroMaster/history/20260618/20260618112002-Diff-Config.rsc diff --git a/MikroMaster/20260618/20260618112002-Binary.backup b/MikroMaster/20260618/20260618112002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..1e75058fc377f8723a6d96ac3c33a71cfe260473 GIT binary patch literal 273800 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�T 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 z⪚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 GTgh!TZ_{u9 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260618/20260618112002-Config.rsc b/MikroMaster/20260618/20260618112002-Config.rsc new file mode 100644 index 0000000..45a6b51 --- /dev/null +++ b/MikroMaster/20260618/20260618112002-Config.rsc @@ -0,0 +1,3669 @@ +# 2026-06-18 11:20:07 by RouterOS 7.23.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BF auto-mac=no dhcpv6-agent-circuit-id=\ + "\$(INTERFACE):\$(VID)" dhcpv6-agent-remote-id="\$(BRIDGEMAC)" name=\ + Bridge-LAN port-cost-mode=short +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" loop-protect=off name=\ + "ether1 - Unet" rx-flow-control=auto tx-flow-control=auto +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 wireless +# managed by CAPsMAN +# channel: 2442/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1320 name=WG +/interface list +add include=static name=LAN +add name=Internet +add include=Internet name=WAN +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys 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 +add name=iVados 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 +#error exporting "/ip/ipsec/policy/group" (timeout) +/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-client option +add code=119 name=domain-search-list value="0x03'WORKGROUP'0x00" +add code=12 name=HostName value="\$(HOSTNAME)" +add code=61 name=DUID value=0x00030001488f5a8e1abc +add code=61 name=clientid +/ipv6 dhcp-server option +add code=119 name=domain-search-list value="0x03'WORKGROUP'0x00" +add code=12 name=HostName value="\$(HOSTNAME)" +add code=61 name=CLIENT_DUID +add code=61 name=CLIENT_MAC +/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/694/a1b071a6\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:04 15.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" +add dont-require-permissions=no name=IPv6-Settings owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + #############Script Settings##################\ + \n\ + \n:local \"IF-TUN\" \"6to4-tun\"\ + \n:local \"IF-LOC\" \"Bridge-LAN\"\ + \n:local \"POOL-6TO4\" \"poolV6-local\"\ + \n:local \"force-update\" false\ + \n############ use then static ip #######################\ + \n:local \"lease-address\" [/ip address get [find interface=\$\"IF-LOC\"] \ + address]\ + \n#:local \"interface\" \"ext\"\ + \n:local bound 0\ + \n\ + \n###############################################\ + \n\ + \n:local 6to4prefix do={\ + \n :global dec2hex\ + \n :local ipv4 \$1\ + \n :local ipv6 \"2002:\"\ + \n :for i from=0 to=2 step=1 do={ \ + \n :if ( \$i = 2) do={\ + \n :set ipv6 (\$ipv6.\":\")\ + \n }\ + \n :local fp [:find \$ipv4 \".\"]\ + \n :if ( \$fp > 0 ) do={\ + \n :set ipv6 (\$ipv6.[\$dec2hex [:pick \$ipv4 0 \$fp]])\ + \n :set ipv4 [:pick \$ipv4 (\$fp + 1 ) [:len \$ipv4]]\ + \n }\ + \n }\ + \n :return (\$ipv6.[\$dec2hex \$ipv4])\ + \n}\ + \n:local \"str_replace\" do={\ + \n :local \"str-pos\" [:find \$1 \$2]\ + \n :local \"str-len\" [:len \$2]\ + \n :local str \"\"\ + \n :local rest \$1\ + \n :while (\$\"str-pos\" >= 0) do={\ + \n :local t [:pick \$rest 0 \$\"str-pos\"]\ + \n :if ( \$4 > 0 ) do={\ + \n :for i from=1 to=(\$4 - [:len \$t]) step=1 do={\ + \n :set str (\$str.\$5)\ + \n }\ + \n }\ + \n :set str (\$str.\$t.\$3)\ + \n :set rest [:pick \$rest (\$\"str-pos\"+\$\"str-len\") [:len \$re\ + st]]\ + \n :set \"str-pos\" [:find \$rest \$2]\ + \n }\ + \n :return (\$str.\$rest)\ + \n}\ + \n\ + \n:if (\$bound=1) do={\ + \n :local t [:find \$\"lease-address\" \"/\"]\ + \n\ + \n :if ( \$t >= 0 ) do={\ + \n :set \"lease-address\" [:pick \$\"lease-address\" 0 \$t]\ + \n }\ + \n\ + \n :if ( [/interface 6to4 print count-only where name=\$\"IF-TUN\"] = 0\ + ) do={\ + \n /interface 6to4 add !keepalive local-address=\$\"lease-address\"\ + \_mtu=1280 name=\$\"IF-TUN\" remote-address=10.30.30.0\ + \n :set \"force-update\" true\ + \n }\ + \n\ + \n :local \"IPv4-TUN\" [/interface 6to4 get [find name=\$\"IF-TUN\"] lo\ + cal-address];\ + \n\ + \n :if ( \$\"lease-address\" != \$\"IPv4-TUN\" || \$\"force-update\" = \ + true) do={\ + \n /interface 6to4 set [find name=\$\"IF-TUN\"] local-address=\$\"l\ + ease-address\"\ + \n /ipv6 address remove [find interface=\$\"IF-TUN\"]\ + \n /ipv6 address remove [find interface=\$\"IF-LOC\"]\ + \n /ipv6 route remove [find gateway ~ \$\"IF-TUN\" and dst-address=\ + \"::/0\"]\ + \n :local \"pool-prefix\" [\$6to4prefix \$\"lease-address\"]\ + \n :if ( [/ipv6 pool print count-only where name=\$\"POOL-6TO4\"] =\ + \_0) do={ \ + \n /ipv6 pool add name=\$\"POOL-6TO4\" prefix=(\$\"pool-prefix\ + \".\":1::/64\") prefix-length=64\ + \n } else={\ + \n /ipv6 pool set [/ipv6 pool find where name=\$\"POOL-6TO4\"] \ + prefix=(\$\"pool-prefix\".\":1::/64\")\ + \n }\ + \n /ipv6 address add address=(\$\"pool-prefix\".\"::\".[\$MAC2EUI64\ + \_[/interface get [find name=\$\"interface\"] mac-address]].\"/3\") interf\ + ace=\$\"IF-TUN\" advertise=no\ + \n /ipv6 address add eui-64=yes from-pool=\$\"POOL-6TO4\" interface\ + =\$\"IF-LOC\" advertise=yes\ + \n /ipv6 route add dst-address=::/0 gateway=(\"::10.30.30.81%\".\$\ + \"IF-TUN\")\ + \n :local t [/ipv6 address get [find interface=\$\"IF-LOC\"] addres\ + s]\ + \n :set t [:pick \$t 0 [:find \$t \"/\"]]\ + \n :if ( [/ipv6 dhcp-server option print count-only where name=DNS]\ + \_= 0) do={\ + \n /ipv6 dhcp-server option add code=23 name=DNS value=(\"0x\".\ + [\$\"str_replace\" \$t \":\" \"\" 4 \"0\"])\ + \n } else={\ + \n /ipv6 dhcp-server option set [/ipv6 dhcp-server option find \ + where name=DNS] value=(\"0x\".[\$\"str_replace\" \$t \":\" \"\" 4 \"0\"])\ + \n }\ + \n :if ( [/ipv6 dhcp-server print count-only where interface=\$\"IF\ + -LOC\"] = 0) do={\ + \n /ipv6 dhcp-server add address-pool=\$\"POOL-6TO4\" dhcp-opti\ + on=DNS interface=\$\"IF-LOC\" lease-time=1d name=\$\"IF-LOC\"\ + \n }\ + \n :if ( [ipv6 nd print count-only where interface=\$\"IF-LOC\"] = \ + 0) do={\ + \n /ipv6 nd add advertise-dns=no interface=\$\"IF-LOC\" other-c\ + onfiguration=yes\ + \n }\ + \n }\ + \n}" +add dont-require-permissions=no name=IPv6-GlobalFunc owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global MAC2EUI64 do={\ + \n :local EUI64 \"\"\ + \n :local MAC \$1\ + \n :local HEX2DEC \"0123456789ABCDEF\"\ + \n :for i from=0 to=5 step=1 do={\ + \n :if ( \$i = 0 ) do={\ + \n :set EUI64 [:pick \$MAC 0]\ + \n :set EUI64 (\$EUI64.[:tostr [:pick \$\"HEX2DEC\" ([:find \$\ + \"HEX2DEC\" [:pick \$MAC 1]] ^ 2)]])\ + \n }\ + \n :if ( \$i = 1 || \$i = 3) do={\ + \n :set EUI64 (\$EUI64.\":\")\ + \n }\ + \n :if ( \$i = 2 ) do={\ + \n :set EUI64 (\$EUI64.\"FF:FE\")\ + \n }\ + \n :if ( [:find \$MAC \":\"] = 2 ) do={\ + \n :set MAC [:pick \$MAC 3 [:len \$MAC]]\ + \n :set EUI64 (\$EUI64.[:pick \$MAC 0 2])\ + \n }\ + \n }\ + \n :return (\$EUI64)\ + \n}\ + \n\ + \n:global dec2hex do={\ + \n :local hex \"\"\ + \n :local dec [:tonum \$1]\ + \n :for i from=0 to=4 step=4 do={\ + \n :set hex ([:pick \"0123456789ABCDEF\" ((\$dec>>\$i)&0xf) (((\$de\ + c>>\$i)&0xf)+1)].\$hex)\ + \n }\ + \n :return ([:tostr \$hex])\ + \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" +/ip smb +set enabled=no interfaces=lo +/interface bridge port +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 trusted=yes +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 lldp-med=no lldp-poe-power=no +/ip settings +set accept-redirects=yes ipv4-multipath-hash-policy=l4 max-neighbor-entries=\ + 8192 +/ipv6 settings +set disable-ipv6=yes disable-link-local-address=yes forward=no \ + max-neighbor-entries=8192 multipath-hash-policy=l4 +/interface detect-internet +set detect-interface-list=static internet-interface-list=WAN \ + lan-interface-list=LAN request-interval=1m wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 109.107.177.79 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=10s public-key=\ + "zuRsO+dL/j6awaBWZ/NgnHR+bCNUjRWbaHFpdzkNnw4=" +/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=\ + wlan2,wlan1 lock-to-caps-man=yes +/ip address +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +/ip cloud +set update-time=no +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main:2 dhcp-options=clientid,clientid_duid \ + interface="ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/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=iVados 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.4.4,1.0.0.1 verify-doh-cert=yes +/ip dns static +add address=109.107.177.79 name=vds.vados.ru type=A +add comment="Local DNS server for vados.ru" disabled=yes ns=10.30.30.81 \ + regexp=*.vados.ru type=NS +add comment="*.vados.ru Regexp" disabled=yes forward-to=10.30.30.81 regexp=\ + "\".*\\\\.vados\\\\.ru\"" type=FWD +add comment="*.30.30.10.in-addr.arpa Regexp" disabled=yes forward-to=\ + 10.30.30.81 regexp="\".*\\\\.30\\\\.30\\\\.10\\\\.in-addr\\\\.arpa" type=\ + FWD +add address=10.30.30.81 comment=NS.vados.ru.local disabled=yes name=\ + ns.vados.ru.local type=A +add comment="DNS ns.vados.ru.local" disabled=yes match-subdomain=yes name=\ + vados.ru ns=ns.vados.ru.local type=NS +add address=10.30.30.33 comment=reg.vados.ru name=reg.vados.ru type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" match-subdomain=yes name=\ + dns.google type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +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 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 match-subdomain=yes name=mikrots.vados.ru 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" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=195.133.25.16 comment="DNS Comss" disabled=yes name=dns.comss.one \ + 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=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws 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=wg.vados.ru comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" disabled=yes 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=amster 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=10.30.30.30 comment=miller disabled=yes list=NoWG +add address=10.30.30.33 comment="Direct connet to DNS servers" list=\ + Direct-DNS +add address=wg.vados.ru list=VPN-Server +/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="ether1 - Unet" 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="ether1 - Unet" 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 \ + in-interface="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp +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=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=udp +add action=accept chain=input comment="tcp Accept input DNS queries from LAN" \ + dst-port=53 in-interface=Bridge-LAN protocol=tcp src-address=\ + 10.30.30.0/24 +add action=accept chain=input comment="udp Accept input DNS queries" \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address=\ + 10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server out-interface="ether1 - Unet" protocol=udp src-port=13231 +add action=accept chain=output dst-address-list=VPN-Server dst-port=29185 \ + out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +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 in-interface="ether1 - Unet" src-address=\ + !10.30.30.0/24 +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=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 +add action=accept chain=input protocol=icmp src-address-list=VDSina +add action=accept chain=input connection-state=established +add action=accept chain=input connection-state=related in-interface-list=\ + *2000014 +add action=drop chain=input in-interface=!Bridge-LAN +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address-list=NoVdsina \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address-list=VPN-Server \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 \ + src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina 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" disabled=yes \ + new-connection-mark=VPN_No_FastTrack routing-mark=To-VPN +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 new-routing-mark=To-VPN src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment="udp Redirect DNS in NAT" disabled=\ + yes dst-port=53 protocol=udp src-address=10.30.30.0/24 to-addresses=\ + 10.30.30.81 to-ports=53 +add action=redirect chain=dstnat comment="tcp Redirect DNS in NAT" disabled=\ + yes dst-port=53 protocol=tcp src-address=10.30.30.0/24 to-addresses=\ + 10.30.30.81 to-ports=53 +add action=dst-nat chain=dstnat disabled=yes dst-port=44333 in-interface=\ + "ether1 - Unet" protocol=udp src-address=!10.30.30.0/24 to-addresses=\ + 10.30.30.33 to-ports=44333 +add action=masquerade chain=srcnat comment="Default NAT" dst-address=\ + !10.30.30.0/24 out-interface="ether1 - Unet" src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp 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" disabled=yes \ + 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 disabled=yes 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" disabled=yes dst-port=\ + 2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment=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 src-address-list=TRUSTED to-addresses=\ + 10.30.30.33 to-ports=22 +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=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG routing-mark=To-VPN src-address-list=!NoWG +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=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=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=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 check-gateway="(unknown)" disabled=no distance=1 dst-address=0.0.0.0/0 \ + gateway=WG routing-table=To-VPN 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 forced-ip=146.120.64.211 interface="ether1 - Unet" type=external +add forced-ip=109.107.177.79 interface=WG type=external +add interface=lo type=internal +add interface=wlan2 type=internal +add interface=wlan1 type=internal +/ipv6 dhcp-client +add add-default-route=yes disabled=yes interface=*F rapid-commit=no request=\ + info use-interface-duid=yes validate-server-duid=no +/ipv6 dhcp-server option sets +add name=domain-search-set options=domain-search-list +add name="=\"Client ID\"" options=HostName +/ipv6 firewall address-list +add address=::/128 comment="defconf: unspecified address" list=bad_ipv6 +add address=::1/128 comment="defconf: lo" list=bad_ipv6 +add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6 +add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6 +add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6 +add address=100::/64 comment="defconf: discard only " list=bad_ipv6 +add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6 +add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6 +add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6 +/ipv6 firewall filter +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 ICMPv6" protocol=\ + icmpv6 +add action=accept chain=input comment="defconf: accept UDP traceroute" \ + dst-port=33434-33534 protocol=udp +add action=accept chain=input comment=\ + "defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\ + udp src-address=fe80::/10 +add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 \ + protocol=udp +add action=accept chain=input comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=input comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=input comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +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 packets with bad src ipv6" src-address-list=bad_ipv6 +add action=drop chain=forward comment=\ + "defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6 +add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \ + hop-limit=equal:1 protocol=icmpv6 +add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=forward comment="defconf: accept HIP" protocol=139 +add action=accept chain=forward comment="defconf: accept IKE" dst-port=\ + 500,4500 protocol=udp +add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=forward comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=forward comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +/ipv6 nd +set [ find default=yes ] advertise-dns=yes disabled=yes interface=Bridge-LAN \ + managed-address-configuration=yes other-configuration=yes pref64=::/64 +/ipv6 nd prefix +add autonomous=no disabled=yes interface=Bridge-LAN on-link=no prefix=none +/ipv6 nd prefix default +set dhcp6-pd-preferred=yes +/ipv6 nd proxy +add disabled=yes interface=lo +/ipv6 nd settings +set router-advertisement-route-distance=100 +/routing bfd configuration +add addresses=10.8.0.0/24 disabled=no forbid-bfd=yes interfaces=WG min-rx=\ + 200ms min-tx=200ms multiplier=5 vrf=main +/routing settings +set single-process=no +/system clock +set 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 package update +set check-certificate=yes-without-crl +/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 certificate=DigiCert-Global-Root-CA check-certificate=no comment="doh, doh\ + -url=https://security.cloudflare-dns.com/dns-query, notify, name=CloudFlar\ + e-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 http-codes="" \ + interval=10s name="CloudFlare-doh IPv4 1" port=443 test-script="" type=\ + https-get 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="" \ + name="CloudFlare-doh IPv4" port=443 test-script="" type=https-get \ + up-script="" +add comment="dns, notify, name=Google-DNS IPv4" disabled=yes dns-server=\ + 8.8.8.8 down-script="" host=dns.google http-codes="" name=\ + "Google-DNS IPv4" test-script="" type=dns up-script="" +add certificate=GTS-Root-R4 check-certificate=yes comment="doh-fallback, doh-u\ + rl=https://dns.google/dns-query, doh-cert=GTS Root R1, notify, name=Google\ + -DOH IPv4" disabled=yes dns-server=8.8.4.4 down-script="" host=dns.google \ + http-codes="" name="Google-DOH IPv4" port=443 record-type=NS src-address=\ + "" test-script="" type=dns up-script="" +add comment="dns-fallback, notify, name=Cuad9-DOH IPv4" disabled=yes \ + dns-server=9.9.9.9 down-script="" host=dns9.quad9.net http-codes="" \ + interval=10s name="Cuad9-DOH IPv4" src-address=146.120.64.211 \ + test-script="" timeout=800ms type=dns up-script="" +add certificate=DigiCert-Assured-ID-Root-CA comment="doh-fallback, doh-url=htt\ + ps://dns.quad9.net/dns-query, name=Cuad9-DOH IPv4" disabled=yes \ + down-script="" host=149.112.112.112 http-codes="" interval=10s name=\ + "Cuad9-DOH IPv4" port=443 test-script="" type=https-get up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" interval=10s name=\ + ns1.unet.ws test-script="" type=simple up-script="" +add check-certificate=yes comment=\ + "doh, doh-url=https://vds.vados.ru/vds-query, name=vds.vados.ru" \ + disabled=yes down-script="" host=109.107.177.79 http-codes="" name=\ + vds.vados.ru port=443 test-script="" type=https-get up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260618/20260618112002-Diff-Config.rsc b/MikroMaster/history/20260618/20260618112002-Diff-Config.rsc new file mode 100644 index 0000000..41a9ffa --- /dev/null +++ b/MikroMaster/history/20260618/20260618112002-Diff-Config.rsc @@ -0,0 +1,2 @@ +65d64 +< #error exporting "/ip/ipsec/policy/group" (timeout) -- 2.52.0