From 5b8508f203fd0816ca11549f5d2af71f0ffef3ef Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 11:20:21 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 11:20:21. --- .../20260515/20260515112001-Binary.backup | Bin 0 -> 248719 bytes .../20260515/20260515112001-Config.rsc | 3575 +++++++++++++++++ .../20260515/20260515112001-Diff-Config.rsc | 180 + 3 files changed, 3755 insertions(+) create mode 100644 MikroMaster/20260515/20260515112001-Binary.backup create mode 100644 MikroMaster/20260515/20260515112001-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515112001-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515112001-Binary.backup b/MikroMaster/20260515/20260515112001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..5080a5e74894c78b5e24c9d67cbb3de589e61e35 GIT binary patch literal 248719 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

FM&22KV;~C3 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≧@+#h6feN(Op&dWicPS$KVrOoDNA= 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260515/20260515112001-Config.rsc b/MikroMaster/20260515/20260515112001-Config.rsc new file mode 100644 index 0000000..4d04962 --- /dev/null +++ b/MikroMaster/20260515/20260515112001-Config.rsc @@ -0,0 +1,3575 @@ +# 2026-05-15 11:20: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/641/dccfa1dc\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 11:05: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 \"fbcd.net\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"twimg.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"ytimg.com\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\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: \$ListRKN add\ + ress: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :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# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list:\$ListRKN \ + address: \$newAddress domain: \$aItem record: \$aRecord\";\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" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=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=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=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.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=8.47.69.6 comment=dou.ua list=RKN-dnsLookup +add address=8.6.112.6 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=172.66.0.227 comment=twitter.com list=RKN-dnsLookup +add address=64.233.164.190 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.91 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.93 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.136 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.147 comment=googleapis.com list=RKN-dnsLookup +add address=209.85.233.99 comment=googleapis.com list=RKN-dnsLookup +add address=209.85.233.104 comment=googleapis.com list=RKN-dnsLookup +add address=209.85.233.106 comment=googleapis.com list=RKN-dnsLookup +add address=209.85.233.103 comment=googleapis.com list=RKN-dnsLookup +add address=209.85.233.105 comment=googleapis.com list=RKN-dnsLookup +add address=209.85.233.91 comment=youtu.be list=RKN-dnsLookup +add address=209.85.233.190 comment=youtu.be list=RKN-dnsLookup +add address=209.85.233.136 comment=youtu.be list=RKN-dnsLookup +add address=209.85.233.93 comment=youtu.be list=RKN-dnsLookup +add address=64.233.164.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.103 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.106 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.99 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.105 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.73.120 comment=gstatic.com list=RKN-dnsLookup +add address=173.194.73.94 comment=gstatic.com list=RKN-dnsLookup +add address=108.177.14.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!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=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="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" disabled=yes dst-port=53 \ + protocol=tcp src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat disabled=yes 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/20260515112001-Diff-Config.rsc b/MikroMaster/history/20260515/20260515112001-Diff-Config.rsc new file mode 100644 index 0000000..49c36e2 --- /dev/null +++ b/MikroMaster/history/20260515/20260515112001-Diff-Config.rsc @@ -0,0 +1,180 @@ +348c348 +< \n:global CommitId \"main/641/dccfa1dc\";\r\ +--- +> \n:global CommitId \"main/639/8da4c517\";\r\ +351c351 +< r: root, in 11:05:03 15.05.2026.\";\r\ +--- +> r: root, in 10:55:02 15.05.2026.\";\r\ +2481a2482 +> \n \"ggpht.com\"\r\ +2511,2512c2512,2513 +< \n :log error \"error when adding ip to list: \$ListRKN add\ +< ress: \$newAddress domain: \$aItem\";\r\ +--- +> \n :log error \"error when adding ip to list: \$newAddress\ +> \";\r\ +2536,2537c2537,2538 +< \n :log error \"error when adding ip to list:\$ListRKN \ +< address: \$newAddress domain: \$aItem record: \$aRecord\";\r\ +--- +> \n :log error \"error when adding ip to list: \$newAddr\ +> ess\";\r\ +2683c2684,2685 +< add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +--- +> add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ +> dns.quad9.net type=A +2686,2687c2688,2689 +< add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +< add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +--- +> add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ +> A +2694a2697,2700 +> 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 +2786a2793,2895 +> 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 +3231d3339 +< add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +3232a3341 +> add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +3241d3349 +< add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +3243c3351 +< add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +--- +> add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +3244a3353 +> add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +3248c3357 +< add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +--- +> add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +3251,3260c3360,3369 +< add address=64.233.164.190 comment=youtube.com list=RKN-dnsLookup +< add address=64.233.164.91 comment=youtube.com list=RKN-dnsLookup +< add address=64.233.164.93 comment=youtube.com list=RKN-dnsLookup +< add address=64.233.164.136 comment=youtube.com list=RKN-dnsLookup +< add address=209.85.233.147 comment=googleapis.com list=RKN-dnsLookup +< add address=209.85.233.99 comment=googleapis.com list=RKN-dnsLookup +< add address=209.85.233.104 comment=googleapis.com list=RKN-dnsLookup +< add address=209.85.233.106 comment=googleapis.com list=RKN-dnsLookup +< add address=209.85.233.103 comment=googleapis.com list=RKN-dnsLookup +< add address=209.85.233.105 comment=googleapis.com list=RKN-dnsLookup +--- +> add address=173.194.221.136 comment=youtube.com list=RKN-dnsLookup +> add address=173.194.221.190 comment=youtube.com list=RKN-dnsLookup +> add address=173.194.221.93 comment=youtube.com list=RKN-dnsLookup +> add address=173.194.221.91 comment=youtube.com list=RKN-dnsLookup +> add address=142.250.150.106 comment=googleapis.com list=RKN-dnsLookup +> add address=142.250.150.104 comment=googleapis.com list=RKN-dnsLookup +> add address=142.250.150.105 comment=googleapis.com list=RKN-dnsLookup +> add address=142.250.150.99 comment=googleapis.com list=RKN-dnsLookup +> add address=142.250.150.147 comment=googleapis.com list=RKN-dnsLookup +> add address=142.250.150.103 comment=googleapis.com list=RKN-dnsLookup -- 2.52.0