From 580789e3809e047bb31d981a92111b280dd16631 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 18 Jun 2026 11:42:10 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 18 11:42:10. --- .../20260618/20260618114001-Binary.backup | Bin 0 -> 273800 bytes .../20260618/20260618114001-Config.rsc | 3668 +++++++++++++++++ .../20260618/20260618114001-Diff-Config.rsc | 2 + 3 files changed, 3670 insertions(+) create mode 100644 MikroMaster/20260618/20260618114001-Binary.backup create mode 100644 MikroMaster/20260618/20260618114001-Config.rsc create mode 100644 MikroMaster/history/20260618/20260618114001-Diff-Config.rsc diff --git a/MikroMaster/20260618/20260618114001-Binary.backup b/MikroMaster/20260618/20260618114001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0f1f317d53c7b1cb81d89aef32723ca30d0b2891 GIT binary patch literal 273800 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

xtKy$SZJ{K z744n;Q3h>M{Da&xOO3__i2#XPMdU5k4lB^n6J-K2+VxWLe-idBzKg-^P)O zeb-{6i2*$gO_eV?Z;D)9GVU{2P|EefqxVU6zH8loQ3~^t)?iFEIbjDaXN%jYKcR*B z(+h!)v*AScf&YRH=Ty6izk?c-vnDWjg3@emfGLAH(w08St#2PvC7Nu7-qk?;$r0p9G>B4U^{_1ppiZ=>62gO!y3 zISrwBW@LhQd^hk~+^qcuv2J3c{tq`_Dl!cnl`g&5Vb>9MIyXS<9HDJg&^hp7_=S9 zXcx_R9`Gx0QKaZ~4nsZFqnf?D&#>=@J}CNIdjm`xTRBt2jk0pyQ3eMf1CyrcaZ#7& zVZYrAV*CtQ&4^w>GCC@kDy>hVsTTv&1eae5H4u%0NvVoB zPFxA_APg-nEfIa}EHEu=RnMZTh^e-j_8NXfs!k;^exmtr+r3uMwX{Zfntscv$Yf69Tu3{t#HYYQmx_wrK0Z;}(^p)1Y6vIlNoM zC1V?iZtLzu3GW|(CgJpt%&I9z$cOayM+@&d-8APH}7Q6fcusWwQ0Y6TmFk2u-#U@-`k1DPR)D>7sf zT_q~B?K2;z7q#hSbORk+b%DLhjZV9@+ib@y4o8}{J?2=Jn#9Cvm!-I&TU!jF{7iWP Gx8ip-!opJk literal 0 HcmV?d00001 diff --git a/MikroMaster/20260618/20260618114001-Config.rsc b/MikroMaster/20260618/20260618114001-Config.rsc new file mode 100644 index 0000000..71f606e --- /dev/null +++ b/MikroMaster/20260618/20260618114001-Config.rsc @@ -0,0 +1,3668 @@ +# 2026-06-18 11:40:05 by RouterOS 7.23.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BF auto-mac=no dhcpv6-agent-circuit-id=\ + "\$(INTERFACE):\$(VID)" dhcpv6-agent-remote-id="\$(BRIDGEMAC)" name=\ + Bridge-LAN port-cost-mode=short +/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 +# managed by CAPsMAN +# channel: 2442/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1320 name=WG +/interface list +add include=static name=LAN +add name=Internet +add include=Internet name=WAN +/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 +add name=iVados options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ipv6 dhcp-client option +add code=119 name=domain-search-list value="0x03'WORKGROUP'0x00" +add code=12 name=HostName value="\$(HOSTNAME)" +add code=61 name=DUID value=0x00030001488f5a8e1abc +add code=61 name=clientid +/ipv6 dhcp-server option +add code=119 name=domain-search-list value="0x03'WORKGROUP'0x00" +add code=12 name=HostName value="\$(HOSTNAME)" +add code=61 name=CLIENT_DUID +add code=61 name=CLIENT_MAC +/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/694/a1b071a6\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:04 15.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" +add dont-require-permissions=no name=IPv6-Settings owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + #############Script Settings##################\ + \n\ + \n:local \"IF-TUN\" \"6to4-tun\"\ + \n:local \"IF-LOC\" \"Bridge-LAN\"\ + \n:local \"POOL-6TO4\" \"poolV6-local\"\ + \n:local \"force-update\" false\ + \n############ use then static ip #######################\ + \n:local \"lease-address\" [/ip address get [find interface=\$\"IF-LOC\"] \ + address]\ + \n#:local \"interface\" \"ext\"\ + \n:local bound 0\ + \n\ + \n###############################################\ + \n\ + \n:local 6to4prefix do={\ + \n :global dec2hex\ + \n :local ipv4 \$1\ + \n :local ipv6 \"2002:\"\ + \n :for i from=0 to=2 step=1 do={ \ + \n :if ( \$i = 2) do={\ + \n :set ipv6 (\$ipv6.\":\")\ + \n }\ + \n :local fp [:find \$ipv4 \".\"]\ + \n :if ( \$fp > 0 ) do={\ + \n :set ipv6 (\$ipv6.[\$dec2hex [:pick \$ipv4 0 \$fp]])\ + \n :set ipv4 [:pick \$ipv4 (\$fp + 1 ) [:len \$ipv4]]\ + \n }\ + \n }\ + \n :return (\$ipv6.[\$dec2hex \$ipv4])\ + \n}\ + \n:local \"str_replace\" do={\ + \n :local \"str-pos\" [:find \$1 \$2]\ + \n :local \"str-len\" [:len \$2]\ + \n :local str \"\"\ + \n :local rest \$1\ + \n :while (\$\"str-pos\" >= 0) do={\ + \n :local t [:pick \$rest 0 \$\"str-pos\"]\ + \n :if ( \$4 > 0 ) do={\ + \n :for i from=1 to=(\$4 - [:len \$t]) step=1 do={\ + \n :set str (\$str.\$5)\ + \n }\ + \n }\ + \n :set str (\$str.\$t.\$3)\ + \n :set rest [:pick \$rest (\$\"str-pos\"+\$\"str-len\") [:len \$re\ + st]]\ + \n :set \"str-pos\" [:find \$rest \$2]\ + \n }\ + \n :return (\$str.\$rest)\ + \n}\ + \n\ + \n:if (\$bound=1) do={\ + \n :local t [:find \$\"lease-address\" \"/\"]\ + \n\ + \n :if ( \$t >= 0 ) do={\ + \n :set \"lease-address\" [:pick \$\"lease-address\" 0 \$t]\ + \n }\ + \n\ + \n :if ( [/interface 6to4 print count-only where name=\$\"IF-TUN\"] = 0\ + ) do={\ + \n /interface 6to4 add !keepalive local-address=\$\"lease-address\"\ + \_mtu=1280 name=\$\"IF-TUN\" remote-address=10.30.30.0\ + \n :set \"force-update\" true\ + \n }\ + \n\ + \n :local \"IPv4-TUN\" [/interface 6to4 get [find name=\$\"IF-TUN\"] lo\ + cal-address];\ + \n\ + \n :if ( \$\"lease-address\" != \$\"IPv4-TUN\" || \$\"force-update\" = \ + true) do={\ + \n /interface 6to4 set [find name=\$\"IF-TUN\"] local-address=\$\"l\ + ease-address\"\ + \n /ipv6 address remove [find interface=\$\"IF-TUN\"]\ + \n /ipv6 address remove [find interface=\$\"IF-LOC\"]\ + \n /ipv6 route remove [find gateway ~ \$\"IF-TUN\" and dst-address=\ + \"::/0\"]\ + \n :local \"pool-prefix\" [\$6to4prefix \$\"lease-address\"]\ + \n :if ( [/ipv6 pool print count-only where name=\$\"POOL-6TO4\"] =\ + \_0) do={ \ + \n /ipv6 pool add name=\$\"POOL-6TO4\" prefix=(\$\"pool-prefix\ + \".\":1::/64\") prefix-length=64\ + \n } else={\ + \n /ipv6 pool set [/ipv6 pool find where name=\$\"POOL-6TO4\"] \ + prefix=(\$\"pool-prefix\".\":1::/64\")\ + \n }\ + \n /ipv6 address add address=(\$\"pool-prefix\".\"::\".[\$MAC2EUI64\ + \_[/interface get [find name=\$\"interface\"] mac-address]].\"/3\") interf\ + ace=\$\"IF-TUN\" advertise=no\ + \n /ipv6 address add eui-64=yes from-pool=\$\"POOL-6TO4\" interface\ + =\$\"IF-LOC\" advertise=yes\ + \n /ipv6 route add dst-address=::/0 gateway=(\"::10.30.30.81%\".\$\ + \"IF-TUN\")\ + \n :local t [/ipv6 address get [find interface=\$\"IF-LOC\"] addres\ + s]\ + \n :set t [:pick \$t 0 [:find \$t \"/\"]]\ + \n :if ( [/ipv6 dhcp-server option print count-only where name=DNS]\ + \_= 0) do={\ + \n /ipv6 dhcp-server option add code=23 name=DNS value=(\"0x\".\ + [\$\"str_replace\" \$t \":\" \"\" 4 \"0\"])\ + \n } else={\ + \n /ipv6 dhcp-server option set [/ipv6 dhcp-server option find \ + where name=DNS] value=(\"0x\".[\$\"str_replace\" \$t \":\" \"\" 4 \"0\"])\ + \n }\ + \n :if ( [/ipv6 dhcp-server print count-only where interface=\$\"IF\ + -LOC\"] = 0) do={\ + \n /ipv6 dhcp-server add address-pool=\$\"POOL-6TO4\" dhcp-opti\ + on=DNS interface=\$\"IF-LOC\" lease-time=1d name=\$\"IF-LOC\"\ + \n }\ + \n :if ( [ipv6 nd print count-only where interface=\$\"IF-LOC\"] = \ + 0) do={\ + \n /ipv6 nd add advertise-dns=no interface=\$\"IF-LOC\" other-c\ + onfiguration=yes\ + \n }\ + \n }\ + \n}" +add dont-require-permissions=no name=IPv6-GlobalFunc owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global MAC2EUI64 do={\ + \n :local EUI64 \"\"\ + \n :local MAC \$1\ + \n :local HEX2DEC \"0123456789ABCDEF\"\ + \n :for i from=0 to=5 step=1 do={\ + \n :if ( \$i = 0 ) do={\ + \n :set EUI64 [:pick \$MAC 0]\ + \n :set EUI64 (\$EUI64.[:tostr [:pick \$\"HEX2DEC\" ([:find \$\ + \"HEX2DEC\" [:pick \$MAC 1]] ^ 2)]])\ + \n }\ + \n :if ( \$i = 1 || \$i = 3) do={\ + \n :set EUI64 (\$EUI64.\":\")\ + \n }\ + \n :if ( \$i = 2 ) do={\ + \n :set EUI64 (\$EUI64.\"FF:FE\")\ + \n }\ + \n :if ( [:find \$MAC \":\"] = 2 ) do={\ + \n :set MAC [:pick \$MAC 3 [:len \$MAC]]\ + \n :set EUI64 (\$EUI64.[:pick \$MAC 0 2])\ + \n }\ + \n }\ + \n :return (\$EUI64)\ + \n}\ + \n\ + \n:global dec2hex do={\ + \n :local hex \"\"\ + \n :local dec [:tonum \$1]\ + \n :for i from=0 to=4 step=4 do={\ + \n :set hex ([:pick \"0123456789ABCDEF\" ((\$dec>>\$i)&0xf) (((\$de\ + c>>\$i)&0xf)+1)].\$hex)\ + \n }\ + \n :return ([:tostr \$hex])\ + \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 +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 trusted=yes +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 +/ip settings +set accept-redirects=yes ipv4-multipath-hash-policy=l4 max-neighbor-entries=\ + 8192 +/ipv6 settings +set 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=static internet-interface-list=WAN \ + lan-interface-list=LAN request-interval=1m wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 109.107.177.79 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=10s public-key=\ + "zuRsO+dL/j6awaBWZ/NgnHR+bCNUjRWbaHFpdzkNnw4=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan2,wlan1 lock-to-caps-man=yes +/ip address +add address=10.8.0.2/24 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 add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main:2 dhcp-options=clientid,clientid_duid \ + interface="ether1 - Unet" name=client1 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=iVados 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,1.0.0.1 verify-doh-cert=yes +/ip dns static +add address=109.107.177.79 name=vds.vados.ru type=A +add comment="Local DNS server for vados.ru" disabled=yes ns=10.30.30.81 \ + regexp=*.vados.ru type=NS +add comment="*.vados.ru Regexp" disabled=yes forward-to=10.30.30.81 regexp=\ + "\".*\\\\.vados\\\\.ru\"" type=FWD +add comment="*.30.30.10.in-addr.arpa Regexp" disabled=yes forward-to=\ + 10.30.30.81 regexp="\".*\\\\.30\\\\.30\\\\.10\\\\.in-addr\\\\.arpa" type=\ + FWD +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=reg.vados.ru name=reg.vados.ru type=A +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.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 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" disabled=yes 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 disabled=yes 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=wg.vados.ru comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" disabled=yes 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 +add address=10.30.30.33 comment="Direct connet to DNS servers" list=\ + Direct-DNS +add address=wg.vados.ru list=VPN-Server +/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-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-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=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=udp +add action=accept chain=input comment="tcp Accept input DNS queries from LAN" \ + dst-port=53 in-interface=Bridge-LAN protocol=tcp src-address=\ + 10.30.30.0/24 +add action=accept chain=input comment="udp Accept input DNS queries" \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address=\ + 10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server out-interface="ether1 - Unet" protocol=udp src-port=13231 +add action=accept chain=output 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=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 src-address-list=VDSina +add action=accept chain=input connection-state=established +add action=accept chain=input connection-state=related in-interface-list=\ + *2000014 +add action=drop chain=input in-interface=!Bridge-LAN +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" 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" dst-address-list=VPN-Server \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 \ + src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina 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 routing-mark=To-VPN +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 new-routing-mark=To-VPN src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment="udp Redirect DNS in NAT" disabled=\ + yes dst-port=53 protocol=udp src-address=10.30.30.0/24 to-addresses=\ + 10.30.30.81 to-ports=53 +add action=redirect chain=dstnat comment="tcp Redirect DNS in NAT" disabled=\ + yes dst-port=53 protocol=tcp src-address=10.30.30.0/24 to-addresses=\ + 10.30.30.81 to-ports=53 +add action=dst-nat chain=dstnat disabled=yes dst-port=44333 in-interface=\ + "ether1 - Unet" protocol=udp src-address=!10.30.30.0/24 to-addresses=\ + 10.30.30.33 to-ports=44333 +add action=masquerade chain=srcnat comment="Default NAT" dst-address=\ + !10.30.30.0/24 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=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=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG routing-mark=To-VPN src-address-list=!NoWG +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="(unknown)" disabled=no 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=109.107.177.79 interface=WG type=external +add interface=lo type=internal +add interface=wlan2 type=internal +add interface=wlan1 type=internal +/ipv6 dhcp-client +add add-default-route=yes disabled=yes interface=*F rapid-commit=no request=\ + info use-interface-duid=yes validate-server-duid=no +/ipv6 dhcp-server option sets +add name=domain-search-set options=domain-search-list +add name="=\"Client ID\"" options=HostName +/ipv6 firewall address-list +add address=::/128 comment="defconf: unspecified address" list=bad_ipv6 +add address=::1/128 comment="defconf: lo" list=bad_ipv6 +add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6 +add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6 +add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6 +add address=100::/64 comment="defconf: discard only " list=bad_ipv6 +add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6 +add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6 +add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6 +/ipv6 firewall filter +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=input comment="defconf: accept UDP traceroute" \ + dst-port=33434-33534 protocol=udp +add action=accept chain=input comment=\ + "defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\ + udp src-address=fe80::/10 +add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 \ + protocol=udp +add action=accept chain=input comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=input comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=input comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +add action=accept chain=forward comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop packets with bad src ipv6" src-address-list=bad_ipv6 +add action=drop chain=forward comment=\ + "defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6 +add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \ + hop-limit=equal:1 protocol=icmpv6 +add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=forward comment="defconf: accept HIP" protocol=139 +add action=accept chain=forward comment="defconf: accept IKE" dst-port=\ + 500,4500 protocol=udp +add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=forward comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=forward comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +/ipv6 nd +set [ find default=yes ] advertise-dns=yes disabled=yes interface=Bridge-LAN \ + managed-address-configuration=yes other-configuration=yes pref64=::/64 +/ipv6 nd prefix +add autonomous=no disabled=yes interface=Bridge-LAN on-link=no prefix=none +/ipv6 nd prefix default +set dhcp6-pd-preferred=yes +/ipv6 nd proxy +add disabled=yes interface=lo +/ipv6 nd settings +set router-advertisement-route-distance=100 +/routing bfd configuration +add addresses=10.8.0.0/24 disabled=no forbid-bfd=yes interfaces=WG min-rx=\ + 200ms min-tx=200ms multiplier=5 vrf=main +/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="" +add check-certificate=yes comment=\ + "doh, doh-url=https://vds.vados.ru/vds-query, name=vds.vados.ru" \ + disabled=yes down-script="" host=109.107.177.79 http-codes="" name=\ + vds.vados.ru port=443 test-script="" type=https-get up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260618/20260618114001-Diff-Config.rsc b/MikroMaster/history/20260618/20260618114001-Diff-Config.rsc new file mode 100644 index 0000000..736bbb7 --- /dev/null +++ b/MikroMaster/history/20260618/20260618114001-Diff-Config.rsc @@ -0,0 +1,2 @@ +64a65 +> #error exporting "/ip/ipsec/policy/group" (timeout) -- 2.52.0