From 856d57ae70d94d422e412ba0f959af4ae117f42b Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 12 Jun 2026 05:01:14 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 12 05:01:14. --- .../20260612/20260612050002-Binary.backup | Bin 0 -> 264097 bytes .../20260612/20260612050002-Config.rsc | 3596 +++++++++++++++++ .../20260612/20260612050002-Diff-Config.rsc | 14 + 3 files changed, 3610 insertions(+) create mode 100644 MikroMaster/20260612/20260612050002-Binary.backup create mode 100644 MikroMaster/20260612/20260612050002-Config.rsc create mode 100644 MikroMaster/history/20260612/20260612050002-Diff-Config.rsc diff --git a/MikroMaster/20260612/20260612050002-Binary.backup b/MikroMaster/20260612/20260612050002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..e999a5b2d0b4b3be6c8f519b59c1edb21b044207 GIT binary patch literal 264097 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%0AMbAlZ#N@ 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

hv%;(4wx@)&WEu? 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�?jtP-411+&=qiC>jaWe8Vz~) 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�lQrw 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 bGWXHZPTB8e7*V-{ffv%o8I~P3k~L({fE_^_ literal 0 HcmV?d00001 diff --git a/MikroMaster/20260612/20260612050002-Config.rsc b/MikroMaster/20260612/20260612050002-Config.rsc new file mode 100644 index 0000000..e24f9b4 --- /dev/null +++ b/MikroMaster/20260612/20260612050002-Config.rsc @@ -0,0 +1,3596 @@ +# 2026-06-12 05:00:05 by RouterOS 7.23.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add 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 +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add disabled=yes listen-port=30283 mtu=1420 name=WG +/interface list +add name=LAN +add exclude=LAN name=WAN +add exclude=LAN include=WAN name=Internet +/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 +/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 +add dns-servers=10.30.30.81 name=reg.vados.ru verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ipv6 dhcp-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/679/bd93dce4\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 08.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 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 trusted-dhcpv6=yes trusted-ra=yes +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set use-ip-firewall=yes +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN lldp-med=no lldp-poe-power=no protocol="" +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set accept-redirects=yes ipv4-multipath-hash-policy=l4 max-neighbor-entries=\ + 8192 +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + max-neighbor-entries=8192 multipath-hash-policy=l4 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=0.0.0.0/0 disabled=yes \ + endpoint-address=172.172.87.67 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "F0P1v/1/dwGJlDVD1tVlyIAUUd9c5sHokhv/kl5tm1U=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC interfaces=wlan2,wlan1 lock-to-caps-man=yes +/ip address +add address=10.8.0.2 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 default-route-tables=main dhcp-options=hostname,clientid,clientid_duid \ + interface="ether1 - Unet" name=client1 use-broadcast=never 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="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 +/ip dns adlist +add disabled=yes url=https://ros.vados.ru/dns/vados.ru.local +add disabled=yes url=https://ros.vados.ru/dns/30.30.10.in-addr.arpa +/ip dns static +add comment="Local DNS server for vados.ru" ns=10.30.30.81 regexp=*.vados.ru \ + type=NS +add comment="*.vados.ru Regexp" forward-to=10.30.30.81 regexp=\ + "\".*\\\\.vados\\\\.ru\"" type=FWD +add comment="*.30.30.10.in-addr.arpa Regexp" 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 name=ns.vados.ru.local \ + type=A +add comment="DNS ns.vados.ru.local" 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" 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 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=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=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 +/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=accept chain=input comment="tcp Accept input DNS queries from LAN" \ + disabled=yes 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" \ + disabled=yes dst-port=53 in-interface=Bridge-LAN protocol=udp \ + src-address=10.30.30.0/24 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=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 +add action=accept chain=input connection-state=established +add action=accept chain=input connection-state=related +add action=drop chain=input in-interface-list=!LAN +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!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" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes 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 +add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ + 1380 out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn \ + tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment="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=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp 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=masquerade chain=srcnat comment=WG disabled=yes dst-address-list=\ + !NoVdsina out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=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=ping 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=89.110.101.17 interface=WG type=external +add interface=lo 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 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 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="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260612/20260612050002-Diff-Config.rsc b/MikroMaster/history/20260612/20260612050002-Diff-Config.rsc new file mode 100644 index 0000000..2054fde --- /dev/null +++ b/MikroMaster/history/20260612/20260612050002-Diff-Config.rsc @@ -0,0 +1,14 @@ +25c25 +< add disabled=yes listen-port=30283 mtu=1420 name=WG +--- +> add listen-port=55982 mtu=1420 name=WG +2598c2598 +< add allowed-address=0.0.0.0/0 client-allowed-address=0.0.0.0/0 disabled=yes \ +--- +> add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ +2600,2601c2600,2601 +< MikroVados persistent-keepalive=10s public-key=\ +< "F0P1v/1/dwGJlDVD1tVlyIAUUd9c5sHokhv/kl5tm1U=" +--- +> MikroVados persistent-keepalive=25s public-key=\ +> "HTofQ0KtUsZij7zFn0F72r8oatxGn/el6bzLhM9El1g=" -- 2.52.0