From 188954a09e5167f1eea6115a2a41b6f92f6efbd0 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 8 Jun 2026 05:00:36 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 08 05:00:36. --- .../20260608/20260608050002-Binary.backup | Bin 0 -> 256056 bytes .../20260608/20260608050002-Config.rsc | 3404 +++++++++++++++++ .../20260608/20260608050002-Diff-Config.rsc | 21 + 3 files changed, 3425 insertions(+) create mode 100644 MikroMaster/20260608/20260608050002-Binary.backup create mode 100644 MikroMaster/20260608/20260608050002-Config.rsc create mode 100644 MikroMaster/history/20260608/20260608050002-Diff-Config.rsc diff --git a/MikroMaster/20260608/20260608050002-Binary.backup b/MikroMaster/20260608/20260608050002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..88b6e0f1d312bb91d4b11d2b9e07cd84caf9bad8 GIT binary patch literal 256056 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%0D|=-_fj0>jFFwfarzJ{AYv6@1?uwIPy=LsS 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 z zn-E0xMtY-ITW9ieICztZ{&ipJoylQLg}w%jger9hB?cfF-Pxpuy!RDhU7mRj=DDs= zJ$qxeXC$stM}}}N(tFwN3O-|;A|EgOUkPc+8%wHlFZkfrcIz(k1xa|8qu)OxtQ{{L zj^!#549g;mhM&PZEbZ*JQ8F{SvzC?)SudA4^nCEPYjE3fwu_OYHZeF|UIUUpr$SAL zG;VBI0-mKW5;_Bp_Q)Fc---a}iPREbT!wIEm(RQYym#sQ{^_RVPzhpyr1uFT^`DRav>{ zhG{;Y2XXo@4lEJx3#z#(5i?ggn*d5hJf%=c(nkjrwsVOk)bh&2B-S$fDsx;m%Npvu zZ?x}wS5^s-$Ajh1Na`?wT1d{)DFA&J`!zmJ*ts#r&HswJqN@;3D@bp!6gW816f#j4 zqr{;WK<~ke1-)aW8^*Wug-37;kFd`h@7MVba+*8Toh5lcbvk$a&LO`<0awugI1lYm7LDt+h^Sxns| z-xjnfB|w%ybDuiK?¥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�AahruFHVWr%O`UwX@2O76# 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%0Dfmx5DUxO`zW*sznx?gR%H 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

-=R?7vgp$#`(fQ@M7Xn3 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260608/20260608050002-Config.rsc b/MikroMaster/20260608/20260608050002-Config.rsc new file mode 100644 index 0000000..2dbda73 --- /dev/null +++ b/MikroMaster/20260608/20260608050002-Config.rsc @@ -0,0 +1,3404 @@ +# 2026-06-08 05:00:03 by RouterOS 7.23.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add name=Bridge-LAN port-cost-mode=short ra-guard=yes +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" loop-protect=off name=\ + "ether1 - Unet" rx-flow-control=auto tx-flow-control=auto +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface wireless +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add disabled=yes listen-port=55982 mtu=1420 name=WG +/interface list +add name=LAN +add exclude=LAN name=WAN +add exclude=LAN include=WAN name=Internet +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys 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 +add dns-servers=10.30.30.81 name=reg.vados.ru 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/672/7cf8bc7a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:04 06.06.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/ip smb +set enabled=no interfaces=lo +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN lldp-med=no lldp-poe-power=no protocol="" +/ip settings +set accept-redirects=yes ipv4-multipath-hash-policy=l4 max-neighbor-entries=\ + 8192 +/ipv6 settings +set accept-router-advertisements-on=LAN allow-fast-path=no disable-ipv6=yes \ + disable-link-local-address=yes forward=no max-neighbor-entries=8192 \ + multipath-hash-policy=l4 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 disabled=yes \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "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 interfaces=wlan2,wlan1 lock-to-caps-man=yes +/ip address +add address=10.8.0.2 disabled=yes interface=WG network=10.8.0.0 +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +/ip cloud +set update-time=no +/ip dhcp-client +add check-gateway=arp default-route-tables=main interface="ether1 - Unet" \ + name=client1 use-broadcast=never use-peer-dns=no use-peer-ntp=no +/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.4.4,8.8.8.8 +/ip dns adlist +add url=https://ros.vados.ru/dns/vados.ru.local +/ip dns static +add address=8.8.8.8 comment="Google-dns IPv4 1" match-subdomain=yes name=\ + dns.google type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=10.30.30.81 comment=NS.vados.ru.local disabled=yes name=\ + ns.vados.ru.local type=A +add comment="DNS ns.vados.ru.local" disabled=yes match-subdomain=yes name=\ + vados.ru ns=ns.vados.ru.local type=NS +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +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 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.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" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one 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=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test-IP +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=amster disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=10.30.30.30 comment=miller disabled=yes list=NoWG +/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="ether1 - Unet" 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="ether1 - Unet" 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 \ + in-interface="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp +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 WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=input dst-address=10.30.30.81 dst-port=53 \ + in-interface=Bridge-LAN protocol=tcp src-address=10.30.30.0/24 +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 in-interface="ether1 - Unet" src-address=\ + !10.30.30.0/24 +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +add action=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 +add action=accept chain=input protocol=icmp +add action=accept chain=input connection-state=established +add action=accept chain=input connection-state=related +add action=drop chain=input in-interface-list=!LAN +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ + 1380 out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn \ + tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" disabled=yes dst-port=53 \ + in-interface=Bridge-LAN protocol=tcp src-address=10.30.30.0/24 to-ports=\ + 53 +add action=redirect chain=dstnat comment="udp Redirect DNS in NAT" dst-port=\ + 53 protocol=udp src-address=10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp src-address=\ + !10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" disabled=yes \ + dst-port=2904 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru disabled=yes dst-port=\ + 5000 in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" disabled=yes dst-port=\ + 2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=TRUSTED to-addresses=\ + 10.30.30.33 to-ports=22 +add action=masquerade chain=srcnat comment=WG disabled=yes dst-address-list=\ + !NoVdsina out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=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=\ + 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=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add forced-ip=146.120.64.211 interface="ether1 - Unet" type=external +add forced-ip=89.110.101.17 interface=WG type=external +add interface=lo type=internal +/ipv6 nd +set [ find default=yes ] disabled=yes +/ipv6 nd settings +set router-advertisement-route-distance=100 +/routing settings +set single-process=no +/system clock +set 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 package update +set check-certificate=yes-without-crl +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add certificate=DigiCert-Global-Root-CA check-certificate=no comment="doh, doh\ + -url=https://security.cloudflare-dns.com/dns-query, notify, name=CloudFlar\ + e-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 http-codes="" \ + interval=10s name="CloudFlare-doh IPv4 1" port=443 test-script="" type=\ + https-get 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="" \ + name="CloudFlare-doh IPv4" port=443 test-script="" type=https-get \ + up-script="" +add comment="dns, notify, name=Google-DNS IPv4" disabled=yes dns-server=\ + 8.8.8.8 down-script="" host=dns.google http-codes="" name=\ + "Google-DNS IPv4" test-script="" type=dns up-script="" +add certificate=GTS-Root-R4 check-certificate=yes comment="doh-fallback, doh-u\ + rl=https://dns.google/dns-query, doh-cert=GTS Root R1, notify, name=Google\ + -DOH IPv4" disabled=yes dns-server=8.8.4.4 down-script="" host=dns.google \ + http-codes="" name="Google-DOH IPv4" port=443 record-type=NS src-address=\ + "" test-script="" type=dns up-script="" +add comment="dns-fallback, notify, name=Cuad9-DOH IPv4" disabled=yes \ + dns-server=9.9.9.9 down-script="" host=dns9.quad9.net http-codes="" \ + interval=10s name="Cuad9-DOH IPv4" src-address=146.120.64.211 \ + test-script="" timeout=800ms type=dns up-script="" +add certificate=DigiCert-Assured-ID-Root-CA comment="doh-fallback, doh-url=htt\ + ps://dns.quad9.net/dns-query, name=Cuad9-DOH IPv4" disabled=yes \ + down-script="" host=149.112.112.112 http-codes="" interval=10s name=\ + "Cuad9-DOH IPv4" port=443 test-script="" type=https-get up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" interval=10s name=\ + ns1.unet.ws test-script="" type=simple up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260608/20260608050002-Diff-Config.rsc b/MikroMaster/history/20260608/20260608050002-Diff-Config.rsc new file mode 100644 index 0000000..20432c5 --- /dev/null +++ b/MikroMaster/history/20260608/20260608050002-Diff-Config.rsc @@ -0,0 +1,21 @@ +2446,2447c2446,2447 +< add check-gateway=arp default-route-tables=main interface="ether1 - Unet" \ +< name=client1 use-broadcast=never use-peer-dns=no use-peer-ntp=no +--- +> add default-route-tables=main interface="ether1 - Unet" name=client1 \ +> use-peer-dns=no use-peer-ntp=no +3084c3084 +< udp src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +--- +> udp src-address=!10.30.30.0/24 +3087,3088c3087 +< in-interface="ether1 - Unet" protocol=tcp src-address=!10.30.30.0/24 \ +< src-address-list=!Trusted-DNS +--- +> in-interface="ether1 - Unet" protocol=tcp src-address=!10.30.30.0/24 +3178,3179c3177,3178 +< add action=redirect chain=dstnat comment="udp Redirect DNS in NAT" dst-port=\ +< 53 protocol=udp src-address=10.30.30.0/24 to-ports=53 +--- +> add action=redirect chain=dstnat disabled=yes dst-port=53 in-interface=\ +> Bridge-LAN protocol=udp src-address=10.30.30.0/24 to-ports=53 -- 2.52.0