From 7196b02935ab6829941d8755c8b2d2b1289018b5 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 31 May 2026 00:00:35 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 31 00:00:35. --- .../20260531/20260531000002-Binary.backup | Bin 0 -> 259199 bytes .../20260531/20260531000002-Config.rsc | 3462 +++++++++++++++++ .../20260531/20260531000002-Diff-Config.rsc | 6 + 3 files changed, 3468 insertions(+) create mode 100644 MikroMaster/20260531/20260531000002-Binary.backup create mode 100644 MikroMaster/20260531/20260531000002-Config.rsc create mode 100644 MikroMaster/history/20260531/20260531000002-Diff-Config.rsc diff --git a/MikroMaster/20260531/20260531000002-Binary.backup b/MikroMaster/20260531/20260531000002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..d0146623d9528740df72455a8f98622e981f5508 GIT binary patch literal 259199 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

&KdI+R^0#L}?A$~PY@pDSvvIzgah6$~kN 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 MR1HO^a~qUzA9=|s0ssI2 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260531/20260531000002-Config.rsc b/MikroMaster/20260531/20260531000002-Config.rsc new file mode 100644 index 0000000..2d51063 --- /dev/null +++ b/MikroMaster/20260531/20260531000002-Config.rsc @@ -0,0 +1,3462 @@ +# 2026-05-31 00:00:04 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add mtu=1598 name=Bridge-LAN port-cost-mode=short protocol-mode=stp +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2442/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 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=1420 name=WG +/interface list +add name=WAN +add name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ipv6 dhcp-server +add address-pool=vadosV6 disabled=yes interface=Bridge-LAN name=masterIPV6 \ + prefix-pool=vados use-reconfigure=yes +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/663/fee06fc8\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 02:10:03 30.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=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=157.240.205.35 comment=facebook.com list=RKN-dnsLookup +add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=209.85.233.190 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.91 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.93 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.136 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.190 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.91 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.136 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.164.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/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 out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "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=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 \ + src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address=!10.30.30.0/24 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" 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" routing-mark=!To-VPN src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp src-address=\ + !10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" dst-port=2377 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +add action=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=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add 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/20260531/20260531000002-Diff-Config.rsc b/MikroMaster/history/20260531/20260531000002-Diff-Config.rsc new file mode 100644 index 0000000..675b07a --- /dev/null +++ b/MikroMaster/history/20260531/20260531000002-Diff-Config.rsc @@ -0,0 +1,6 @@ +3228,3229c3228,3229 +< disabled=yes dst-address=!10.30.30.0/24 new-routing-mark=To-VPN \ +< src-address=10.30.30.0/24 src-address-list=!NoWG +--- +> dst-address=!10.30.30.0/24 new-routing-mark=To-VPN src-address=\ +> 10.30.30.0/24 src-address-list=!NoWG -- 2.52.0