From 517fb71e9d4dbfbd0106c53043926d7428d2861e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 18:20:21 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 18:20:21. --- .../20260515/20260515182001-Binary.backup | Bin 0 -> 242677 bytes .../20260515/20260515182001-Config.rsc | 3409 +++++++++++++++++ .../20260515/20260515182001-Diff-Config.rsc | 25 + 3 files changed, 3434 insertions(+) create mode 100644 MikroMaster/20260515/20260515182001-Binary.backup create mode 100644 MikroMaster/20260515/20260515182001-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515182001-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515182001-Binary.backup b/MikroMaster/20260515/20260515182001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..e144b11b7539c37cf03107b8256fbd28b00c4285 GIT binary patch literal 242677 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 vbn4nkMGI+Xl;48 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�b*YJYrH!PuHzY{EPl5MIG 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 V&0M2wg$pCe$r1$$OM-kl{Mq$;*dG7@ literal 0 HcmV?d00001 diff --git a/MikroMaster/20260515/20260515182001-Config.rsc b/MikroMaster/20260515/20260515182001-Config.rsc new file mode 100644 index 0000000..683435a --- /dev/null +++ b/MikroMaster/20260515/20260515182001-Config.rsc @@ -0,0 +1,3409 @@ +# 2026-05-15 18:20:02 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: 2442/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1420 name=WG +/interface list +add name=WAN +add name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/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/657/b0bd77b1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:15:02 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 /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 +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=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test-IP +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=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=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=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=209.85.233.136 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.93 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.190 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.91 comment=youtube.com list=RKN-dnsLookup +add address=108.177.14.105 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.103 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.99 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.104 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.147 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.163.190 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.91 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.136 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.222.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.162.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.162.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-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new 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" dst-port=123 protocol=udp \ + src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 \ + src-address-list=NoWG +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address-list=VDSina new-routing-mark=\ + main passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address-list=NoVdsina \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + new-connection-mark=VPN_No_FastTrack routing-mark=To-VPN +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address-list=!Local-Net 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" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" protocol=tcp routing-mark=!To-VPN \ + to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment=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=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=\ + "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=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net +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=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add disabled=yes forced-ip=89.110.101.17 interface=WG type=external +/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/20260515182001-Diff-Config.rsc b/MikroMaster/history/20260515/20260515182001-Diff-Config.rsc new file mode 100644 index 0000000..cfbe5f0 --- /dev/null +++ b/MikroMaster/history/20260515/20260515182001-Diff-Config.rsc @@ -0,0 +1,25 @@ +3088,3089c3088,3090 +< 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=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +> add address=172.66.0.227 comment=x.com list=RKN-dnsLookup +> add address=162.159.140.229 comment=twitter.com list=RKN-dnsLookup +3091d3091 +< add address=209.85.233.93 comment=youtube.com list=RKN-dnsLookup +3093a3094 +> add address=209.85.233.93 comment=youtube.com list=RKN-dnsLookup +3104,3109c3105,3110 +< 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.106 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +--- +> add address=173.194.221.103 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.221.104 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.221.99 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.221.105 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.221.147 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.221.106 comment=googlevideo.com list=RKN-dnsLookup -- 2.52.0