From 77704d4274810a20a758ce166cb6b79702bcd140 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 10:40:21 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 10:40:21. --- .../20260515/20260515104002-Binary.backup | Bin 0 -> 255063 bytes .../20260515/20260515104002-Config.rsc | 3648 +++++++++++++++++ .../20260515/20260515104002-Diff-Config.rsc | 267 ++ 3 files changed, 3915 insertions(+) create mode 100644 MikroMaster/20260515/20260515104002-Binary.backup create mode 100644 MikroMaster/20260515/20260515104002-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515104002-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515104002-Binary.backup b/MikroMaster/20260515/20260515104002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..a22da91ef8addfa69e00d384c82c46a93113d40f GIT binary patch literal 255063 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 z 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 tr=FCz+sK%ftr^+$6LjoR&ne?X96 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260515/20260515104002-Config.rsc b/MikroMaster/20260515/20260515104002-Config.rsc new file mode 100644 index 0000000..a7312f6 --- /dev/null +++ b/MikroMaster/20260515/20260515104002-Config.rsc @@ -0,0 +1,3648 @@ +# 2026-05-15 10:40:02 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add name=Bridge-LAN +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/interface list +add name=WAN +add name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/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/636/1e86a8d7\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 09:15:03 15.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\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="Download custom Certificates By Routers Identity " \ + dont-require-permissions=no name=mod/AM-Certs-By-Ident owner=\ + mod/AM-Certs-By-Ident policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Certs-By-Ident\r\ + \n# Script comment: Download custom Certificates By Routers Identity \r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n#\r\ + \n# CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n:local UrlSuffix [/system/identity/get name];\r\ + \n:local UrlDir \"certs/\";\r\ + \n:local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\");\r\ + \n\r\ + \n:log error \$CertUrl;\r\ + \n\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +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 \"kasparov.ru\"\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 \"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 :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - 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=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\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 :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 /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\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:20: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 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \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 +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 +/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 interface="ether1 - Unet" list=WAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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" disabled=yes 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=91.192.189.2 comment=Unet-DNS disabled=yes 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 +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws 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=10.30.30.100-255 list=KIDS +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 +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +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 +add address=geoip.co list=NoVdsina +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +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=iCloud-Mail +add address=smtp.mail.me.com.akadns.net comment=smtp.mail.me.com.akadns.net \ + list=iCloud-Mail +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=Trusted-VPN +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!!!" disabled=yes 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=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +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=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=194.85.61.76 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=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.9.225 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 +/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=!10.30.30.0/24 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=!10.30.30.0/24 \ + 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=!10.30.30.0/24 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" \ + 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" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + 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" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address-list=NoVdsina \ + new-routing-mark=main src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +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="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +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="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +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=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="vk.com raw" \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="ok.ru raw" \ + content=ok.ru +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "comp-lenta.ru raw" content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="gov.ru raw" \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "r78.fssp.gov.ru raw" content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +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 port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set graphs-plain=no rest-plain=no webfig-plain=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 +/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" 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/20260515/20260515104002-Diff-Config.rsc b/MikroMaster/history/20260515/20260515104002-Diff-Config.rsc new file mode 100644 index 0000000..a8e7521 --- /dev/null +++ b/MikroMaster/history/20260515/20260515104002-Diff-Config.rsc @@ -0,0 +1,267 @@ +2427,2539d2426 +< 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 \"kasparov.ru\"\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 \"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 :resolve \$aItem;\r\ +< \n } on-error={\r\ +< \n :log error \"dns resolve failure [ ip - 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=\$n\ +< ewAddress comment=\$aItem;\r\ +< \n } on-error={\r\ +< \n :log error \"error when adding ip to list: \$newAddress\ +< \";\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 :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 /ip firewall address-list add list=\$ListRKN address\ +< =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ +< \n } on-error={\r\ +< \n :log error \"error when adding ip to list: \$newAddr\ +< ess\";\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:20: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 5s; \r\ +< \n:global dnsLookupReady (a);\r\ +< \n" +3318a3206,3224 +> add address=149.154.164.13 comment=telegra.ph list=FuckRKN +> add address=109.70.26.37 comment=grani.ru list=FuckRKN +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +> add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +> add address=104.20.28.254 comment=dou.ua list=FuckRKN +> add address=172.66.164.200 comment=dou.ua list=FuckRKN +> add address=66.254.114.79 comment=youporn.com list=FuckRKN +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +> add address=149.154.167.99 comment=telegram.org list=FuckRKN +> add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +3321,3339d3226 +< add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +< add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +< add address=194.85.61.76 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=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +< add address=104.21.9.225 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 +3418c3305 +< "Mark Routing main for NoVdsina" disabled=yes dst-address-list=NoVdsina \ +--- +> "Mark Routing main for NoVdsina" dst-address-list=NoVdsina \ +3423,3425c3310,3312 +< add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ +< dst-address-list=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ +< 10.30.30.0/24 +--- +> add action=mark-routing chain=prerouting comment=FuckRKN dst-address-list=\ +> FuckRKN new-routing-mark=To-VPN src-address=10.30.30.0/24 \ +> src-address-list=!NoWG +3436c3323,3324 +< facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 +--- +> facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ +> src-address-list=!NoWG +3491c3379,3390 +< add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ +--- +> add action=add-dst-to-address-list address-list=Instagram \ +> address-list-timeout=none-dynamic chain=prerouting comment=\ +> "Instagram raw" content=instagram.com +> add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ +> none-dynamic chain=prerouting comment="Twitter raw" content=twimg.com \ +> dst-address-list=!Local-Net src-address-list=!Local-Net +> add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ +> none-dynamic chain=prerouting comment="Twitter raw" content=x.com \ +> dst-address-list=!Local-Net src-address-list=!Local-Net +> add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ +> none-dynamic chain=prerouting comment="Twitter raw" content=twitter.com +> add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ +3493c3392 +< add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ +--- +> add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ +3496c3395 +< add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ +--- +> add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ +3498c3397 +< add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ +--- +> add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ +3500c3399 +< add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ +--- +> add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ +3502c3401 +< add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ +--- +> add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ +3505,3512c3404,3409 +< add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ +< none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com +< add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ +< none-dynamic chain=prerouting comment="YouTube raw" content=\ +< googleusercontent.com +< add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ +< none-dynamic chain=prerouting comment="YouTube raw" content=\ +< nhacmp3youtube.com +--- +> add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ +> none-dynamic chain=prerouting content=gstatic.com +> add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ +> none-dynamic chain=prerouting content=googleusercontent.com +> add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ +> none-dynamic chain=prerouting content=nhacmp3youtube.com +3517c3414 +< address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ +--- +> address-list-timeout=none-dynamic chain=prerouting comment=me.com \ +3520,3521c3417,3423 +< address-list-timeout=none-dynamic chain=prerouting comment=\ +< "icloud.com raw" content=icloud.com +--- +> address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ +> content=icloud.com +> add action=add-dst-to-address-list address-list=facebook \ +> address-list-timeout=none-dynamic chain=prerouting comment=facebook \ +> content=fbcd.net +> add action=add-dst-to-address-list address-list=facebook \ +> address-list-timeout=none-dynamic chain=prerouting content=facebook.com +3523,3524c3425,3426 +< address-list-timeout=none-dynamic chain=prerouting comment=\ +< "comp-lenta.ru raw" content=comp-lenta.ru +--- +> address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ +> content=comp-lenta.ru +3527c3429 +< "smtp.mail.me.com raw" content=smtp.mail.me.com +--- +> smtp.mail.me.com content=smtp.mail.me.com +3529c3431 +< address-list-timeout=none-dynamic chain=prerouting comment="gov.ru raw" \ +--- +> address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ +3533c3435,3438 +< "r78.fssp.gov.ru raw" content=r78.fssp.gov.ru +--- +> r78.fssp.gov.ru content=r78.fssp.gov.ru +> add action=add-dst-to-address-list address-list=NoVdsina \ +> address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ +> content=api.db-ip.com +3536c3441 +< "api.db-ip.com raw" content=api.db-ip.com +--- +> api.telegram.org content=api.telegram.org +3610,3613d3514 +< ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ +< start-time=startup +< add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ +< on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ -- 2.52.0