From c9f1ce07d3e8a5d7870eb3220feb014c44042e54 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 23 May 2026 04:20:42 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 23 04:20:42. --- .../20260523/20260523042002-Binary.backup | Bin 0 -> 254579 bytes .../20260523/20260523042002-Config.rsc | 3453 +++++++++++++++++ .../20260523/20260523042002-Diff-Config.rsc | 16 + 3 files changed, 3469 insertions(+) create mode 100644 MikroMaster/20260523/20260523042002-Binary.backup create mode 100644 MikroMaster/20260523/20260523042002-Config.rsc create mode 100644 MikroMaster/history/20260523/20260523042002-Diff-Config.rsc diff --git a/MikroMaster/20260523/20260523042002-Binary.backup b/MikroMaster/20260523/20260523042002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..e530e6a3641750cd4a30de08f153640547574b04 GIT binary patch literal 254579 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

tM;eZWEiJS0$fM+V1+qx2$85n=c@ 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≻pgRo<3z<85h5BsB@Sn+BKH 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 z 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 z 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

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