From 02c4460075a7e0137e26a963af71bf45bbbd6562 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 5 Jun 2026 17:20:31 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 05 17:20:30. --- .../20260605/20260605172001-Binary.backup | Bin 0 -> 251280 bytes .../20260605/20260605172001-Config.rsc | 3394 +++++++++++++++++ .../20260605/20260605172001-Diff-Config.rsc | 54 + 3 files changed, 3448 insertions(+) create mode 100644 MikroMaster/20260605/20260605172001-Binary.backup create mode 100644 MikroMaster/20260605/20260605172001-Config.rsc create mode 100644 MikroMaster/history/20260605/20260605172001-Diff-Config.rsc diff --git a/MikroMaster/20260605/20260605172001-Binary.backup b/MikroMaster/20260605/20260605172001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..a90568319dad65b52711d55a3d76f2328c49d78c GIT binary patch literal 251280 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

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