From ca27a8f1fecc9dc240c781825b068dda6395ec1a Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 1 Jun 2026 20:20:42 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 01 20:20:42. --- .../20260601/20260601202001-Binary.backup | Bin 0 -> 259199 bytes .../20260601/20260601202001-Config.rsc | 3462 +++++++++++++++++ .../20260601/20260601202001-Diff-Config.rsc | 18 + 3 files changed, 3480 insertions(+) create mode 100644 MikroMaster/20260601/20260601202001-Binary.backup create mode 100644 MikroMaster/20260601/20260601202001-Config.rsc create mode 100644 MikroMaster/history/20260601/20260601202001-Diff-Config.rsc diff --git a/MikroMaster/20260601/20260601202001-Binary.backup b/MikroMaster/20260601/20260601202001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..cad8801a1de45a0d9a809fcb37be524a2394e040 GIT binary patch literal 259199 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 !HYbWuYxkCT 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%0AMe`Ld-?2M75K;%4RzJ8ncUkd>>WYS;gX_Tv) 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 A~=hrQOELHJlsR7~ZK6;@V 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 MM;A>kPp}Zu4!^3EsQ>@~ literal 0 HcmV?d00001 diff --git a/MikroMaster/20260601/20260601202001-Config.rsc b/MikroMaster/20260601/20260601202001-Config.rsc new file mode 100644 index 0000000..48460a7 --- /dev/null +++ b/MikroMaster/20260601/20260601202001-Config.rsc @@ -0,0 +1,3462 @@ +# 2026-06-01 20:20:03 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add mtu=1598 name=Bridge-LAN port-cost-mode=short protocol-mode=stp +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2442/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 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/670/7de640a1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 01.06.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/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" \ + 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/20260601/20260601202001-Diff-Config.rsc b/MikroMaster/history/20260601/20260601202001-Diff-Config.rsc new file mode 100644 index 0000000..8ffe6f3 --- /dev/null +++ b/MikroMaster/history/20260601/20260601202001-Diff-Config.rsc @@ -0,0 +1,18 @@ +2448,2450c2448,2450 +< 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=\ +--- +> add allowed-address=0.0.0.0/0 client-allowed-address=::/0 disabled=yes \ +> endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ +> MikroVados persistent-keepalive=25s public-key=\ +3228,3229c3228,3229 +< dst-address=!10.30.30.0/24 new-routing-mark=To-VPN src-address=\ +< 10.30.30.0/24 src-address-list=!NoWG +--- +> 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 +3361c3361 +< add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ +--- +> add disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ -- 2.52.0