From 2df2419bf2833379706a5d46c12b262688a44e2e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Wed, 20 May 2026 23:20:45 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 20 23:20:45. --- .../20260520/20260520232001-Binary.backup | Bin 0 -> 252004 bytes .../20260520/20260520232001-Config.rsc | 3445 +++++++++++++++++ .../20260520/20260520232001-Diff-Config.rsc | 16 + 3 files changed, 3461 insertions(+) create mode 100644 MikroMaster/20260520/20260520232001-Binary.backup create mode 100644 MikroMaster/20260520/20260520232001-Config.rsc create mode 100644 MikroMaster/history/20260520/20260520232001-Diff-Config.rsc diff --git a/MikroMaster/20260520/20260520232001-Binary.backup b/MikroMaster/20260520/20260520232001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..a8cceb9c49399a37d9b3f0fe0afab04a1dded4e5 GIT binary patch literal 252004 zcmV(cK>fe(sF8DI*aH9|HIFz#2O&#W0qkp2r*bI(000O80004Z`SAPzLlIc|M)3m3 z^TPR+Gb`AD`zucH4J9a^sQb+|D0o@kfJ+qvu zJ9H9yfSO9e%7m*+qK^yVK$0$|v823?3~g2RS`l|?m~58rfmUg$e$U2UqV`e87bE(@ zau6R?=R&x(hY&7!e`jEozji9<@qbDRVrl~Dm@k33LVaC≀KK<7S`Yvy~i)*AFGD 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%0DlFxetU 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 v%t)7+=5v;LUIZDI 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 G}vzE77EDkjI~? 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%0D0k5_wKcx#omOT0v0=4Z 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

T<2 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260520/20260520232001-Config.rsc b/MikroMaster/20260520/20260520232001-Config.rsc new file mode 100644 index 0000000..496f37f --- /dev/null +++ b/MikroMaster/20260520/20260520232001-Config.rsc @@ -0,0 +1,3445 @@ +# 2026-05-20 23:20:02 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: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1420 name=WG +/interface list +add name=WAN +add name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/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,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "zuRsO+dL/j6awaBWZ/NgnHR+bCNUjRWbaHFpdzkNnw4=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + 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" \ + disabled=yes 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" disabled=yes \ + 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=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=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +/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/20260520/20260520232001-Diff-Config.rsc b/MikroMaster/history/20260520/20260520232001-Diff-Config.rsc new file mode 100644 index 0000000..8b89f3c --- /dev/null +++ b/MikroMaster/history/20260520/20260520232001-Diff-Config.rsc @@ -0,0 +1,16 @@ +35c35 +< add listen-port=13231 mtu=1420 name=WG +--- +> add disabled=yes listen-port=13231 mtu=1420 name=WG +2448c2448 +< add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ +--- +> add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 disabled=yes \ +2460c2460 +< add address=10.8.0.2/24 interface=WG network=10.8.0.0 +--- +> add address=10.8.0.2/24 disabled=yes interface=WG network=10.8.0.0 +3344c3344 +< add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ +--- +> add disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ -- 2.52.0