From 0843b76423652a4d23b944c00ad22b21b4aff22b Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 13:40:56 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 13:40:56. --- .../20260515/20260515134001-Binary.backup | Bin 0 -> 242382 bytes .../20260515/20260515134001-Config.rsc | 3414 +++++++++++++++++ .../20260515/20260515134001-Diff-Config.rsc | 69 + 3 files changed, 3483 insertions(+) create mode 100644 MikroMaster/20260515/20260515134001-Binary.backup create mode 100644 MikroMaster/20260515/20260515134001-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515134001-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515134001-Binary.backup b/MikroMaster/20260515/20260515134001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..3f89a8b9d097e307a0a993090b08da42a25e301d GIT binary patch literal 242382 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

3+DVCDrDlftEF=64KmQ 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260515/20260515134001-Config.rsc b/MikroMaster/20260515/20260515134001-Config.rsc new file mode 100644 index 0000000..eb883e5 --- /dev/null +++ b/MikroMaster/20260515/20260515134001-Config.rsc @@ -0,0 +1,3414 @@ +# 2026-05-15 13:40:03 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add name=Bridge-LAN +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/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: 2422/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=1280 name=WG +/interface list +add name=WAN +add name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/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/652/6a20e295\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:05:03 15.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 :if ([/ip firewall address-list add list=\$ListRKN address=\ + \$newAddress comment=\$aItem]) do={\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } else={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n# } on-error={\r\ + \n# :log error \"error when adding ip to list A record: \$d\ + nsRecord, 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:20: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" +/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 +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 +/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 interface="ether1 - Unet" list=WAN +/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=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +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 +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 +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=iCloud-Mail +add address=smtp.mail.me.com.akadns.net comment=smtp.mail.me.com.akadns.net \ + list=iCloud-Mail +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=Trusted-VPN +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!!!" disabled=yes 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=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +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=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.9.225 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=8.47.69.6 comment=dou.ua list=RKN-dnsLookup +add address=8.6.112.6 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=157.240.205.35 comment=facebook.com list=RKN-dnsLookup +add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=151.101.130.146 comment=twitter.com list=RKN-dnsLookup +add address=64.233.164.136 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.93 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.190 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.91 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.104 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.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.93 comment=youtu.be list=RKN-dnsLookup +add address=108.177.14.190 comment=youtu.be list=RKN-dnsLookup +add address=108.177.14.91 comment=youtu.be list=RKN-dnsLookup +add address=108.177.14.136 comment=youtu.be list=RKN-dnsLookup +add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.103 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=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.164.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 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=!10.30.30.0/24 \ + 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=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + 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" disabled=yes dst-port=123 \ + in-interface-list=LAN 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" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + 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" +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 VPN connections to exclude from FastTrack" in-interface=WG \ + new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address-list=NoVdsina \ + new-routing-mark=main src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test 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=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" disabled=yes dst-port=53 \ + protocol=tcp src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat disabled=yes dst-port=53 protocol=udp \ + src-address=10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +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=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="vk.com raw" \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="ok.ru raw" \ + content=ok.ru +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "comp-lenta.ru raw" content=comp-lenta.ru +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 +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="gov.ru raw" \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "r78.fssp.gov.ru raw" content=r78.fssp.gov.ru +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 +/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=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +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 port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set graphs-plain=no rest-plain=no webfig-plain=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 +/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" 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/20260515/20260515134001-Diff-Config.rsc b/MikroMaster/history/20260515/20260515134001-Diff-Config.rsc new file mode 100644 index 0000000..6b09875 --- /dev/null +++ b/MikroMaster/history/20260515/20260515134001-Diff-Config.rsc @@ -0,0 +1,69 @@ +3070d3069 +< add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +3072,3073c3071,3073 +< add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +< add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +--- +> add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +> add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +> add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +3082d3081 +< add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +3083a3083 +> add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +3086,3087c3086,3087 +< add address=157.240.205.35 comment=facebook.com list=RKN-dnsLookup +< add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +--- +> add address=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +> add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +3089,3112c3089,3112 +< add address=151.101.130.146 comment=twitter.com list=RKN-dnsLookup +< add address=64.233.164.136 comment=youtube.com list=RKN-dnsLookup +< add address=64.233.164.93 comment=youtube.com list=RKN-dnsLookup +< add address=64.233.164.190 comment=youtube.com list=RKN-dnsLookup +< add address=64.233.164.91 comment=youtube.com list=RKN-dnsLookup +< add address=64.233.162.104 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.162.105 comment=googleapis.com list=RKN-dnsLookup +< add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +< add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +< add address=108.177.14.93 comment=youtu.be list=RKN-dnsLookup +< add address=108.177.14.190 comment=youtu.be list=RKN-dnsLookup +< add address=108.177.14.91 comment=youtu.be list=RKN-dnsLookup +< add address=108.177.14.136 comment=youtu.be list=RKN-dnsLookup +< add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.222.99 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.222.103 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=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +< add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +< add address=64.233.164.132 comment=googleusercontent.com list=RKN-dnsLookup +--- +> add address=172.66.0.227 comment=twitter.com list=RKN-dnsLookup +> add address=74.125.205.91 comment=youtube.com list=RKN-dnsLookup +> add address=74.125.205.93 comment=youtube.com list=RKN-dnsLookup +> add address=74.125.205.190 comment=youtube.com list=RKN-dnsLookup +> add address=74.125.205.136 comment=youtube.com list=RKN-dnsLookup +> add address=173.194.221.106 comment=googleapis.com list=RKN-dnsLookup +> add address=173.194.221.105 comment=googleapis.com list=RKN-dnsLookup +> add address=173.194.221.103 comment=googleapis.com list=RKN-dnsLookup +> add address=173.194.221.104 comment=googleapis.com list=RKN-dnsLookup +> add address=173.194.221.147 comment=googleapis.com list=RKN-dnsLookup +> add address=173.194.221.99 comment=googleapis.com list=RKN-dnsLookup +> add address=74.125.131.93 comment=youtu.be list=RKN-dnsLookup +> add address=74.125.131.91 comment=youtu.be list=RKN-dnsLookup +> add address=74.125.131.190 comment=youtu.be list=RKN-dnsLookup +> add address=74.125.131.136 comment=youtu.be list=RKN-dnsLookup +> add address=173.194.73.105 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.73.106 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.73.99 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.73.103 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.73.104 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.73.147 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.120 comment=gstatic.com list=RKN-dnsLookup +> add address=173.194.222.94 comment=gstatic.com list=RKN-dnsLookup +> add address=142.251.1.132 comment=googleusercontent.com list=RKN-dnsLookup -- 2.52.0

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