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