From 5a3cf4b7e1df5cc3093e5e23c0121ad0a72d6ca9 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 26 May 2026 15:20:45 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 26 15:20:45. --- .../20260526/20260526152002-Binary.backup | Bin 0 -> 256114 bytes .../20260526/20260526152002-Config.rsc | 3453 +++++++++++++++++ .../20260526/20260526152002-Diff-Config.rsc | 6 + 3 files changed, 3459 insertions(+) create mode 100644 MikroMaster/20260526/20260526152002-Binary.backup create mode 100644 MikroMaster/20260526/20260526152002-Config.rsc create mode 100644 MikroMaster/history/20260526/20260526152002-Diff-Config.rsc diff --git a/MikroMaster/20260526/20260526152002-Binary.backup b/MikroMaster/20260526/20260526152002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..b71a53a0ef8b79dd52d2d6e75ff4d4b5105fce7e GIT binary patch literal 256114 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�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

Zb=& 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260526/20260526152002-Config.rsc b/MikroMaster/20260526/20260526152002-Config.rsc new file mode 100644 index 0000000..36d9fa7 --- /dev/null +++ b/MikroMaster/20260526/20260526152002-Config.rsc @@ -0,0 +1,3453 @@ +# 2026-05-26 15: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: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/interface list +add name=WAN +add name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/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/661/8d6d2114\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 25.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 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 disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + disabled=yes 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 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=VPN_No_FastTrack src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!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="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="VDSIna for All sites" \ + dst-address-list=!Local-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ + VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG src-address-list=!NoWG +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=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" dst-port=2377 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +/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/20260526/20260526152002-Diff-Config.rsc b/MikroMaster/history/20260526/20260526152002-Diff-Config.rsc new file mode 100644 index 0000000..9c2c93a --- /dev/null +++ b/MikroMaster/history/20260526/20260526152002-Diff-Config.rsc @@ -0,0 +1,6 @@ +3225,3226c3225,3226 +< dst-address-list=!Local-Net new-routing-mark=To-VPN src-address=\ +< 10.30.30.0/24 src-address-list=!NoWG +--- +> disabled=yes dst-address-list=!Local-Net new-routing-mark=To-VPN \ +> src-address=10.30.30.0/24 src-address-list=!NoWG -- 2.52.0