aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/accesslist-duplicates.md28
-rw-r--r--doc/backup-cloud.d/notification.avifbin0 -> 11629 bytes
-rw-r--r--doc/backup-cloud.d/notification.svg216
-rw-r--r--doc/backup-cloud.md33
-rw-r--r--doc/backup-email.md26
-rw-r--r--doc/backup-partition.md22
-rw-r--r--doc/backup-upload.d/notification.avifbin0 -> 11776 bytes
-rw-r--r--doc/backup-upload.d/notification.svg212
-rw-r--r--doc/backup-upload.md26
-rw-r--r--doc/capsman-download-packages.md50
-rw-r--r--doc/capsman-rolling-upgrade.md27
-rw-r--r--doc/certificate-renew-issued.md17
-rw-r--r--doc/check-certificates.d/notification.avifbin0 -> 25274 bytes
-rw-r--r--doc/check-certificates.d/notification.svg196
-rw-r--r--doc/check-certificates.md57
-rw-r--r--doc/check-health.d/notification-01-cpu-utilization-high.avifbin0 -> 6481 bytes
-rw-r--r--doc/check-health.d/notification-01-voltage.svg176
-rw-r--r--doc/check-health.d/notification-02-cpu-utilization-ok.avifbin0 -> 6797 bytes
-rw-r--r--doc/check-health.d/notification-02-temperature-high.svg164
-rw-r--r--doc/check-health.d/notification-03-ram-utilization-high.avifbin0 -> 7527 bytes
-rw-r--r--doc/check-health.d/notification-03-temperature-ok.svg164
-rw-r--r--doc/check-health.d/notification-04-psu-fail.svg164
-rw-r--r--doc/check-health.d/notification-04-ram-utilization-ok.avifbin0 -> 6637 bytes
-rw-r--r--doc/check-health.d/notification-05-psu-ok.svg164
-rw-r--r--doc/check-health.d/notification-05-voltage.avifbin0 -> 3829 bytes
-rw-r--r--doc/check-health.d/notification-06-temperature-high.avifbin0 -> 3519 bytes
-rw-r--r--doc/check-health.d/notification-07-temperature-ok.avifbin0 -> 3727 bytes
-rw-r--r--doc/check-health.d/notification-08-psu-fail.avifbin0 -> 3474 bytes
-rw-r--r--doc/check-health.d/notification-09-psu-ok.avifbin0 -> 3531 bytes
-rw-r--r--doc/check-health.md59
-rw-r--r--doc/check-lte-firmware-upgrade.d/notification.avifbin0 -> 5077 bytes
-rw-r--r--doc/check-lte-firmware-upgrade.d/notification.svg184
-rw-r--r--doc/check-lte-firmware-upgrade.md18
-rw-r--r--doc/check-routeros-update.d/notification.avifbin0 -> 6392 bytes
-rw-r--r--doc/check-routeros-update.d/notification.svg230
-rw-r--r--doc/check-routeros-update.md57
-rw-r--r--doc/collect-wireless-mac.d/notification.avifbin0 -> 13378 bytes
-rw-r--r--doc/collect-wireless-mac.d/notification.svg208
-rw-r--r--doc/collect-wireless-mac.md34
-rw-r--r--doc/daily-psk.d/notification.avifbin0 -> 7040 bytes
-rw-r--r--doc/daily-psk.d/notification.svg204
-rw-r--r--doc/daily-psk.md60
-rw-r--r--doc/dhcp-lease-comment.md26
-rw-r--r--doc/dhcp-to-dns.md57
-rw-r--r--doc/firmware-upgrade-reboot.md13
-rw-r--r--doc/fw-addr-lists.md132
-rw-r--r--doc/global-wait.md13
-rw-r--r--doc/gps-track.md17
-rw-r--r--doc/hotspot-to-wpa.md80
-rw-r--r--doc/ip-addr-bridge.md15
-rw-r--r--doc/ipsec-to-dns.md17
-rw-r--r--doc/ipv6-update.md20
-rw-r--r--doc/lease-script.md15
-rw-r--r--doc/leds-mode.md13
-rw-r--r--doc/log-forward.d/notification.avifbin0 -> 6178 bytes
-rw-r--r--doc/log-forward.d/notification.svg192
-rw-r--r--doc/log-forward.md62
-rw-r--r--doc/mod/bridge-port-to.md15
-rw-r--r--doc/mod/bridge-port-vlan.md13
-rw-r--r--doc/mod/inspectvar.md13
-rw-r--r--doc/mod/ipcalc.md13
-rw-r--r--doc/mod/notification-email.md88
-rw-r--r--doc/mod/notification-matrix.d/01-authenticate.avifbin0 -> 3870 bytes
-rw-r--r--doc/mod/notification-matrix.d/01-home-server.avifbin2317 -> 0 bytes
-rw-r--r--doc/mod/notification-matrix.d/02-access-token.avifbin4105 -> 0 bytes
-rw-r--r--doc/mod/notification-matrix.d/02-join-room.avifbin0 -> 3745 bytes
-rw-r--r--doc/mod/notification-matrix.d/03-join-room.avifbin3166 -> 0 bytes
-rw-r--r--doc/mod/notification-matrix.md114
-rw-r--r--doc/mod/notification-ntfy.md91
-rw-r--r--doc/mod/notification-telegram.d/setuserpic.avifbin0 -> 38522 bytes
-rw-r--r--doc/mod/notification-telegram.md55
-rw-r--r--doc/mod/scriptrunonce.md21
-rw-r--r--doc/mod/ssh-keys-import.md73
-rw-r--r--doc/mode-button.md19
-rw-r--r--doc/netwatch-dns.md45
-rw-r--r--doc/netwatch-notify.d/notification-01-down.avifbin0 -> 4193 bytes
-rw-r--r--doc/netwatch-notify.d/notification-01-down.svg168
-rw-r--r--doc/netwatch-notify.d/notification-02-up.avifbin0 -> 4744 bytes
-rw-r--r--doc/netwatch-notify.d/notification-02-up.svg172
-rw-r--r--doc/netwatch-notify.md85
-rw-r--r--doc/netwatch-syslog.md37
-rw-r--r--doc/ospf-to-leds.md13
-rw-r--r--doc/packages-update.md38
-rw-r--r--doc/ppp-on-up.md13
-rw-r--r--doc/rotate-ntp.md46
-rw-r--r--doc/sms-action.md17
-rw-r--r--doc/sms-forward.d/notification.avifbin0 -> 4619 bytes
-rw-r--r--doc/sms-forward.d/notification.svg176
-rw-r--r--doc/sms-forward.md66
-rw-r--r--doc/ssh-keys-import.md35
-rw-r--r--doc/super-mario-theme.md13
-rw-r--r--doc/telegram-chat.d/01-chat-specific.avifbin0 -> 38468 bytes
-rw-r--r--doc/telegram-chat.d/02-chat-all.avifbin0 -> 54713 bytes
-rw-r--r--doc/telegram-chat.d/03-reply.avifbin0 -> 50126 bytes
-rw-r--r--doc/telegram-chat.md152
-rw-r--r--doc/unattended-lte-firmware-upgrade.md14
-rw-r--r--doc/update-gre-address.md13
-rw-r--r--doc/update-tunnelbroker.md20
98 files changed, 1665 insertions, 3441 deletions
diff --git a/doc/accesslist-duplicates.md b/doc/accesslist-duplicates.md
index 50720b1..a1f9198 100644
--- a/doc/accesslist-duplicates.md
+++ b/doc/accesslist-duplicates.md
@@ -1,7 +1,14 @@
Find and remove access list duplicates
======================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -15,14 +22,19 @@ entries in wireless access list.
Requirements and installation
-----------------------------
-Depending on whether you use CAPsMAN (`/caps-man`) or local wireless
-interface (`/interface/wireless`) you need to install a different script.
+Depending on whether you use `wifi` package (`/interface/wifi`), legacy
+wifi with CAPsMAN (`/caps-man`) or local wireless interface
+(`/interface/wireless`) you need to install a different script.
+
+For `wifi`:
+
+ $ScriptInstallUpdate accesslist-duplicates.wifi;
-For CAPsMAN:
+For legacy CAPsMAN:
$ScriptInstallUpdate accesslist-duplicates.capsman;
-For local interface:
+For legacy local interface:
$ScriptInstallUpdate accesslist-duplicates.local;
@@ -31,7 +43,7 @@ Usage and invocation
Run this script from a terminal:
- /system/script/run accesslist-duplicates.local;
+ /system/script/run accesslist-duplicates.wifi;
![screenshot: example](accesslist-duplicates.d/01-example.avif)
@@ -41,5 +53,5 @@ See also
* [Collect MAC addresses in wireless access list](collect-wireless-mac.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/backup-cloud.d/notification.avif b/doc/backup-cloud.d/notification.avif
new file mode 100644
index 0000000..e533908
--- /dev/null
+++ b/doc/backup-cloud.d/notification.avif
Binary files differ
diff --git a/doc/backup-cloud.d/notification.svg b/doc/backup-cloud.d/notification.svg
deleted file mode 100644
index 6e48cd4..0000000
--- a/doc/backup-cloud.d/notification.svg
+++ /dev/null
@@ -1,216 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- width="403.7796"
- height="273.77948"
- viewBox="0 0 106.83336 72.437472"
- version="1.1"
- id="svg8"
- inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
- sodipodi:docname="backup-cloud.svg"
- inkscape:export-filename="logo.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <defs
- id="defs2">
- <rect
- x="180"
- y="0"
- width="658.20044"
- height="397.81946"
- id="rect4813" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.52"
- inkscape:cx="24.013158"
- inkscape:cy="90.789474"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- inkscape:document-rotation="0"
- showgrid="true"
- units="px"
- inkscape:window-width="1920"
- inkscape:window-height="1047"
- inkscape:window-x="0"
- inkscape:window-y="33"
- inkscape:window-maximized="1"
- inkscape:pagecheckerboard="0"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0">
- <inkscape:grid
- type="xygrid"
- id="grid833"
- originx="16.37501"
- originy="11.083325" />
- </sodipodi:namedview>
- <metadata
- id="metadata5">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(16.375,11.083332)">
- <rect
- style="fill:#e6e6e6;stroke:#6c5d53;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="rect857"
- width="105.83334"
- height="71.437485"
- x="-15.875001"
- y="-10.583333"
- rx="1.3229166" />
- <g
- id="g884"
- transform="matrix(0.5,0,0,0.5,-12.40625,-7.1145834)"
- style="stroke-width:2">
- <path
- sodipodi:type="star"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264584;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="path899"
- sodipodi:sides="4"
- sodipodi:cx="12.700001"
- sodipodi:cy="12.700001"
- sodipodi:r1="14.81729"
- sodipodi:r2="10.477405"
- sodipodi:arg1="0.78539816"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="true"
- inkscape:rounded="0.2"
- inkscape:randomized="0"
- d="m 23.177407,23.177407 c -2.963458,2.963458 -17.9913546,2.963458 -20.9548127,0 -2.96345803,-2.963458 -2.96345808,-17.9913546 0,-20.9548127 2.963458,-2.96345803 17.9913547,-2.96345808 20.9548127,0 2.963458,2.963458 2.963458,17.9913547 0,20.9548127 z" />
- <g
- id="g871"
- style="stroke-width:2">
- <g
- aria-label="#!rsc"
- id="text837">
- <path
- d="M 7.483197,16.645533 V 15.621671 H 6.9371377 l 0.165768,-1.277388 H 5.8255169 l -0.165768,1.277388 h -0.975106 l 0.165768,-1.277388 H 3.5730221 l -0.165768,1.277388 H 2.7051778 v 1.023862 H 3.2707393 L 3.0269628,18.517736 H 2.3443886 v 1.023861 H 2.890448 L 2.7051778,20.935999 H 3.9825666 L 4.1678368,19.541597 H 5.1429427 L 4.9576726,20.935999 H 6.2350614 L 6.4203315,19.541597 H 7.1224078 V 18.517736 H 6.5568464 l 0.2437764,-1.872203 z m -2.2037394,1.872203 h -0.975106 l 0.2437765,-1.872203 h 0.975106 z"
- style="stroke-width:0.529163px"
- id="path851" />
- <path
- d="m 9.6186715,14.178515 h -1.638178 l 0.1950212,4.270964 h 1.2481356 z m -0.819089,5.15831 c -0.487553,0 -0.8775954,0.399794 -0.8775954,0.877596 0,0.487552 0.3900424,0.887346 0.8775954,0.887346 0.497304,0 0.8873464,-0.399794 0.8873464,-0.887346 0,-0.477802 -0.3900424,-0.877596 -0.8873464,-0.877596 z"
- style="stroke-width:0.529163px"
- id="path853" />
- <path
- d="m 13.372827,15.61192 c -0.594815,0 -1.10187,0.429047 -1.335895,1.150625 l -0.136515,-1.004359 h -1.335895 v 5.177813 h 1.540667 v -2.603533 c 0.175519,-0.770334 0.438798,-1.228633 1.072617,-1.228633 0.165768,0 0.302283,0.02925 0.468051,0.06826 l 0.243776,-1.491912 c -0.175519,-0.04875 -0.321785,-0.06826 -0.516806,-0.06826 z"
- style="stroke-width:0.529163px"
- id="path855" />
- <path
- d="m 16.181119,15.592418 c -1.306642,0 -2.11598,0.692326 -2.11598,1.579672 0,0.799587 0.507055,1.326144 1.530916,1.618676 0.936102,0.263278 1.092119,0.37054 1.092119,0.721578 0,0.312034 -0.282781,0.487553 -0.750832,0.487553 -0.507055,0 -0.984857,-0.204772 -1.374899,-0.507055 l -0.750832,0.838591 c 0.507055,0.4583 1.267638,0.770334 2.164736,0.770334 1.287139,0 2.30125,-0.633819 2.30125,-1.706435 0,-0.926351 -0.575313,-1.355398 -1.599174,-1.64793 -0.926351,-0.273029 -1.062866,-0.390042 -1.062866,-0.663072 0,-0.234025 0.204773,-0.390042 0.624068,-0.390042 0.448549,0 0.877595,0.146266 1.277389,0.399793 l 0.565561,-0.867844 C 17.604773,15.836195 16.93195,15.592418 16.181119,15.592418 Z"
- style="stroke-width:0.529163px"
- id="path857" />
- <path
- d="m 21.280919,15.592418 c -1.550418,0 -2.535275,1.150625 -2.535275,2.798554 0,1.638178 0.975106,2.710795 2.564528,2.710795 0.711828,0 1.267638,-0.234026 1.74544,-0.614317 l -0.672823,-0.955604 c -0.37054,0.234026 -0.624068,0.351038 -0.994608,0.351038 -0.614317,0 -1.023861,-0.351038 -1.023861,-1.501663 0,-1.160376 0.380291,-1.608925 1.043363,-1.608925 0.351038,0 0.653321,0.117013 0.984857,0.370541 l 0.663072,-0.9166 c -0.497304,-0.419295 -1.053114,-0.633819 -1.774693,-0.633819 z"
- style="stroke-width:0.529163px"
- id="path859" />
- </g>
- <g
- id="g1542"
- transform="matrix(2,0,0,2,-0.41134438,3.175)"
- style="stroke-width:1">
- <path
- d="M 4.9596016,-1.0195918 C 5.3675734,1.8116029 6.8867822,3.5302649 9.983482,3.6714361 7.0655129,4.7878541 4.0581782,2.1638833 4.9596016,-1.0195918"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path943" />
- <path
- d="m 3.3406657,-0.52095963 c 0.034969,-0.00777 0.038854,0.015542 0.041445,0.041445 C 3.4805417,1.3259222 4.2420891,2.6948942 5.2510098,3.6312866 6.2599306,4.5676787 7.6146558,5.3253406 9.525,5.2916667 5.9477993,6.7163303 2.1879835,3.2932527 3.3393705,-0.52095963"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path945" />
- </g>
- </g>
- </g>
- <text
- xml:space="preserve"
- transform="matrix(0.26458333,0,0,0.26458333,-44.950001,-6.6039365)"
- id="text4811"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:15px;font-family:'Fira Mono', 'Roboto Mono', monospace;-inkscape-font-specification:'Fira Mono, Roboto Mono, monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;white-space:pre;shape-inside:url(#rect4813);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="-248.88142"
- y="0"><tspan
- x="180"
- y="10.85"
- id="tspan13469">[MikroTik] 💾☁ Cloud backup
-</tspan><tspan
- x="180"
- y="26.082813"
- id="tspan13471">
-</tspan><tspan
- x="180"
- y="41.082813"
- id="tspan13473">Uploaded backup for MikroTik to cloud.
-</tspan><tspan
- x="180"
- y="56.082811"
- id="tspan13475">
-</tspan><tspan
- x="180"
- y="71.082811"
- id="tspan13477">Hostname: MikroTik
-</tspan><tspan
- x="180"
- y="86.082811"
- id="tspan13479">Board name: CHR
-</tspan><tspan
- x="180"
- y="101.08281"
- id="tspan13481">Architecture: x86_64
-</tspan><tspan
- x="180"
- y="116.08281"
- id="tspan13483">RouterOS:
-</tspan><tspan
- x="180"
- y="131.08281"
- id="tspan13485"> Channel: stable
-</tspan><tspan
- x="180"
- y="146.08282"
- id="tspan13487"> Installed: 7.1.3
-</tspan><tspan
- x="180"
- y="161.08282"
- id="tspan13489">RouterOS-Scripts:
-</tspan><tspan
- x="180"
- y="176.08282"
- id="tspan13491"> Current: 78
-</tspan><tspan
- x="180"
- y="191.08282"
- id="tspan13493">
-</tspan><tspan
- x="180"
- y="206.08282"
- id="tspan13495">Name: cloud-20220224-092419
-</tspan><tspan
- x="180"
- y="221.08282"
- id="tspan13497">Size: 370767 B (362 KiB)
-</tspan><tspan
- x="180"
- y="236.08282"
- id="tspan13499">Download key: LLDBfPcWXxmSetWilqeJX5V</tspan></text>
- </g>
-</svg>
diff --git a/doc/backup-cloud.md b/doc/backup-cloud.md
index b0dc3ef..be6e06d 100644
--- a/doc/backup-cloud.md
+++ b/doc/backup-cloud.md
@@ -1,7 +1,14 @@
Upload backup to Mikrotik cloud
===============================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -12,14 +19,14 @@ Description
This script uploads
[binary backup to Mikrotik cloud](https://wiki.mikrotik.com/wiki/Manual:IP/Cloud#Backup).
-> ⚠️ **Warning**: The used command can hit errors that a script can not handle.
-> This may result in script termination (where no notification is sent) or
-> malfunction of fetch command (where all up- and downloads break) for some
-> time. Failed notifications are queued then.
+> ⚠️ **Warning**: The used command can hit errors that a script can with
+> workaround only. A notification *should* be sent anyway. But it can result
+> in malfunction of fetch command (where all up- and downloads break) for
+> some time. Failed notifications are queued then.
### Sample notification
-![backup-cloud notification](backup-cloud.d/notification.svg)
+![backup-cloud notification](backup-cloud.d/notification.avif)
Requirements and installation
-----------------------------
@@ -36,8 +43,14 @@ The configuration goes to `global-config-overlay`, these are the parameters:
* `BackupPassword`: password to encrypt the backup with
* `BackupRandomDelay`: delay up to amount of seconds when run from scheduler
-Also notification settings are required for e-mail,
-[matrix](mod/notification-matrix.md) and/or
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
+
+Also notification settings are required for
+[e-mail](mod/notification-email.md),
+[matrix](mod/notification-matrix.md),
+[ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md).
Usage and invocation
@@ -59,5 +72,5 @@ See also
* [Upload backup to server](backup-upload.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/backup-email.md b/doc/backup-email.md
index e04a988..a506543 100644
--- a/doc/backup-email.md
+++ b/doc/backup-email.md
@@ -1,7 +1,14 @@
Send backup via e-mail
======================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -15,9 +22,12 @@ configuration export (`/export terse show-sensitive`) via e-mail.
Requirements and installation
-----------------------------
-Just install the script:
+Just install the script and the required module:
+
+ $ScriptInstallUpdate mod/notification-email,backup-email;
- $ScriptInstallUpdate backup-email;
+Also make sure you configure
+[sending notifications via e-mail](mod/notification-email.md).
Configuration
-------------
@@ -26,10 +36,13 @@ The configuration goes to `global-config-overlay`, these are the parameters:
* `BackupSendBinary`: whether to send binary backup
* `BackupSendExport`: whether to send configuration export
+* `BackupSendGlobalConfig`: whether to send `global-config-overlay`
* `BackupPassword`: password to encrypt the backup with
* `BackupRandomDelay`: delay up to amount of seconds when run from scheduler
-Also valid e-mail settings are required to send mails.
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
Usage and invocation
--------------------
@@ -47,8 +60,9 @@ See also
* [Upload backup to Mikrotik cloud](backup-cloud.md)
* [Save configuration to fallback partition](doc/backup-partition.md)
+* [Send notifications via e-mail](mod/notification-email.md)
* [Upload backup to server](backup-upload.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/backup-partition.md b/doc/backup-partition.md
index b502330..ba20657 100644
--- a/doc/backup-partition.md
+++ b/doc/backup-partition.md
@@ -1,7 +1,14 @@
Save configuration to fallback partition
========================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -15,6 +22,14 @@ This script saves the current configuration to fallback
For this to work you need a device with sufficient flash storage that is
properly partitioned.
+To make you aware of a possible issue a scheduler logging a warning is
+added in the backup partition's configuration. You may want to use
+[log-forward](log-forward.md) to be notified.
+
+> ⚠️ **Warning**: Only the configuration is saved to backup partition.
+> Every now and then you should copy your installation over for a recent
+> RouterOS version!
+
Requirements and installation
-----------------------------
@@ -39,7 +54,8 @@ See also
* [Upload backup to Mikrotik cloud](backup-cloud.md)
* [Send backup via e-mail](backup-email.md)
* [Upload backup to server](backup-upload.md)
+* [Forward log messages via notification](log-forward.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/backup-upload.d/notification.avif b/doc/backup-upload.d/notification.avif
new file mode 100644
index 0000000..83cfb18
--- /dev/null
+++ b/doc/backup-upload.d/notification.avif
Binary files differ
diff --git a/doc/backup-upload.d/notification.svg b/doc/backup-upload.d/notification.svg
deleted file mode 100644
index a157840..0000000
--- a/doc/backup-upload.d/notification.svg
+++ /dev/null
@@ -1,212 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- width="443.77951"
- height="263.77945"
- viewBox="0 0 117.41666 69.791631"
- version="1.1"
- id="svg8"
- inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
- sodipodi:docname="backup-upload.svg"
- inkscape:export-filename="logo.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <defs
- id="defs2">
- <rect
- x="180"
- y="0"
- width="658.20044"
- height="397.81946"
- id="rect4813" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.52"
- inkscape:cx="345.72368"
- inkscape:cy="90.789474"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- inkscape:document-rotation="0"
- showgrid="true"
- units="px"
- inkscape:window-width="1920"
- inkscape:window-height="1047"
- inkscape:window-x="0"
- inkscape:window-y="33"
- inkscape:window-maximized="1"
- inkscape:pagecheckerboard="0"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0">
- <inkscape:grid
- type="xygrid"
- id="grid833"
- originx="16.375005"
- originy="11.08332" />
- </sodipodi:namedview>
- <metadata
- id="metadata5">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(16.374996,11.083328)">
- <rect
- style="fill:#e6e6e6;stroke:#6c5d53;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="rect857"
- width="116.41666"
- height="68.791649"
- x="-15.875001"
- y="-10.583333"
- rx="1.4552083" />
- <g
- id="g884"
- transform="matrix(0.5,0,0,0.5,-12.40625,-7.1145834)"
- style="stroke-width:2">
- <path
- sodipodi:type="star"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264584;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="path899"
- sodipodi:sides="4"
- sodipodi:cx="12.700001"
- sodipodi:cy="12.700001"
- sodipodi:r1="14.81729"
- sodipodi:r2="10.477405"
- sodipodi:arg1="0.78539816"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="true"
- inkscape:rounded="0.2"
- inkscape:randomized="0"
- d="m 23.177407,23.177407 c -2.963458,2.963458 -17.9913546,2.963458 -20.9548127,0 -2.96345803,-2.963458 -2.96345808,-17.9913546 0,-20.9548127 2.963458,-2.96345803 17.9913547,-2.96345808 20.9548127,0 2.963458,2.963458 2.963458,17.9913547 0,20.9548127 z" />
- <g
- id="g871"
- style="stroke-width:2">
- <g
- aria-label="#!rsc"
- id="text837">
- <path
- d="M 7.483197,16.645533 V 15.621671 H 6.9371377 l 0.165768,-1.277388 H 5.8255169 l -0.165768,1.277388 h -0.975106 l 0.165768,-1.277388 H 3.5730221 l -0.165768,1.277388 H 2.7051778 v 1.023862 H 3.2707393 L 3.0269628,18.517736 H 2.3443886 v 1.023861 H 2.890448 L 2.7051778,20.935999 H 3.9825666 L 4.1678368,19.541597 H 5.1429427 L 4.9576726,20.935999 H 6.2350614 L 6.4203315,19.541597 H 7.1224078 V 18.517736 H 6.5568464 l 0.2437764,-1.872203 z m -2.2037394,1.872203 h -0.975106 l 0.2437765,-1.872203 h 0.975106 z"
- style="stroke-width:0.529163px"
- id="path851" />
- <path
- d="m 9.6186715,14.178515 h -1.638178 l 0.1950212,4.270964 h 1.2481356 z m -0.819089,5.15831 c -0.487553,0 -0.8775954,0.399794 -0.8775954,0.877596 0,0.487552 0.3900424,0.887346 0.8775954,0.887346 0.497304,0 0.8873464,-0.399794 0.8873464,-0.887346 0,-0.477802 -0.3900424,-0.877596 -0.8873464,-0.877596 z"
- style="stroke-width:0.529163px"
- id="path853" />
- <path
- d="m 13.372827,15.61192 c -0.594815,0 -1.10187,0.429047 -1.335895,1.150625 l -0.136515,-1.004359 h -1.335895 v 5.177813 h 1.540667 v -2.603533 c 0.175519,-0.770334 0.438798,-1.228633 1.072617,-1.228633 0.165768,0 0.302283,0.02925 0.468051,0.06826 l 0.243776,-1.491912 c -0.175519,-0.04875 -0.321785,-0.06826 -0.516806,-0.06826 z"
- style="stroke-width:0.529163px"
- id="path855" />
- <path
- d="m 16.181119,15.592418 c -1.306642,0 -2.11598,0.692326 -2.11598,1.579672 0,0.799587 0.507055,1.326144 1.530916,1.618676 0.936102,0.263278 1.092119,0.37054 1.092119,0.721578 0,0.312034 -0.282781,0.487553 -0.750832,0.487553 -0.507055,0 -0.984857,-0.204772 -1.374899,-0.507055 l -0.750832,0.838591 c 0.507055,0.4583 1.267638,0.770334 2.164736,0.770334 1.287139,0 2.30125,-0.633819 2.30125,-1.706435 0,-0.926351 -0.575313,-1.355398 -1.599174,-1.64793 -0.926351,-0.273029 -1.062866,-0.390042 -1.062866,-0.663072 0,-0.234025 0.204773,-0.390042 0.624068,-0.390042 0.448549,0 0.877595,0.146266 1.277389,0.399793 l 0.565561,-0.867844 C 17.604773,15.836195 16.93195,15.592418 16.181119,15.592418 Z"
- style="stroke-width:0.529163px"
- id="path857" />
- <path
- d="m 21.280919,15.592418 c -1.550418,0 -2.535275,1.150625 -2.535275,2.798554 0,1.638178 0.975106,2.710795 2.564528,2.710795 0.711828,0 1.267638,-0.234026 1.74544,-0.614317 l -0.672823,-0.955604 c -0.37054,0.234026 -0.624068,0.351038 -0.994608,0.351038 -0.614317,0 -1.023861,-0.351038 -1.023861,-1.501663 0,-1.160376 0.380291,-1.608925 1.043363,-1.608925 0.351038,0 0.653321,0.117013 0.984857,0.370541 l 0.663072,-0.9166 c -0.497304,-0.419295 -1.053114,-0.633819 -1.774693,-0.633819 z"
- style="stroke-width:0.529163px"
- id="path859" />
- </g>
- <g
- id="g1542"
- transform="matrix(2,0,0,2,-0.41134438,3.175)"
- style="stroke-width:1">
- <path
- d="M 4.9596016,-1.0195918 C 5.3675734,1.8116029 6.8867822,3.5302649 9.983482,3.6714361 7.0655129,4.7878541 4.0581782,2.1638833 4.9596016,-1.0195918"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path943" />
- <path
- d="m 3.3406657,-0.52095963 c 0.034969,-0.00777 0.038854,0.015542 0.041445,0.041445 C 3.4805417,1.3259222 4.2420891,2.6948942 5.2510098,3.6312866 6.2599306,4.5676787 7.6146558,5.3253406 9.525,5.2916667 5.9477993,6.7163303 2.1879835,3.2932527 3.3393705,-0.52095963"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path945" />
- </g>
- </g>
- </g>
- <text
- xml:space="preserve"
- transform="matrix(0.26458333,0,0,0.26458333,-44.949998,-6.5499577)"
- id="text4811"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:15px;font-family:'Fira Mono', 'Roboto Mono', monospace;-inkscape-font-specification:'Fira Mono, Roboto Mono, monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;white-space:pre;shape-inside:url(#rect4813);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="-248.88142"
- y="0"><tspan
- x="180"
- y="10.85"
- id="tspan10771">[MikroTik] 💾⬆ Backup &amp; Config upload
-</tspan><tspan
- x="180"
- y="25.85"
- id="tspan10773">
-</tspan><tspan
- x="180"
- y="40.85"
- id="tspan10775">Backup and config export upload for MikroTik.
-</tspan><tspan
- x="180"
- y="55.85"
- id="tspan10777">
-</tspan><tspan
- x="180"
- y="70.85"
- id="tspan10779">Hostname: MikroTik
-</tspan><tspan
- x="180"
- y="85.85"
- id="tspan10781">Board name: CHR
-</tspan><tspan
- x="180"
- y="100.85"
- id="tspan10783">Architecture: x86_64
-</tspan><tspan
- x="180"
- y="115.85"
- id="tspan10785">RouterOS:
-</tspan><tspan
- x="180"
- y="130.85"
- id="tspan10787"> Channel: stable
-</tspan><tspan
- x="180"
- y="145.85"
- id="tspan10789"> Installed: 7.1.3
-</tspan><tspan
- x="180"
- y="160.85"
- id="tspan10791">RouterOS-Scripts:
-</tspan><tspan
- x="180"
- y="175.85"
- id="tspan10793"> Current: 78
-</tspan><tspan
- x="180"
- y="190.85"
- id="tspan10795">
-</tspan><tspan
- x="180"
- y="205.85"
- id="tspan10797">Backup file: MikroTik_example_com.backup
-</tspan><tspan
- x="180"
- y="220.85"
- id="tspan10799">Config file: MikroTik_example_com.rsc</tspan></text>
- </g>
-</svg>
diff --git a/doc/backup-upload.md b/doc/backup-upload.md
index 58c1e56..f524adb 100644
--- a/doc/backup-upload.md
+++ b/doc/backup-upload.md
@@ -1,7 +1,14 @@
Upload backup to server
=======================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -19,7 +26,7 @@ configuration export (`/export terse show-sensitive`) to external server.
### Sample notification
-![backup-upload notification](backup-upload.d/notification.svg)
+![backup-upload notification](backup-upload.d/notification.avif)
Requirements and installation
-----------------------------
@@ -35,14 +42,21 @@ The configuration goes to `global-config-overlay`, these are the parameters:
* `BackupSendBinary`: whether to send binary backup
* `BackupSendExport`: whether to send configuration export
+* `BackupSendGlobalConfig`: whether to send `global-config-overlay`
* `BackupPassword`: password to encrypt the backup with
* `BackupRandomDelay`: delay up to amount of seconds when run from scheduler
* `BackupUploadUrl`: url to upload to
* `BackupUploadUser`: username for server authentication
* `BackupUploadPass`: password for server authentication
-Also notification settings are required for e-mail,
-[matrix](mod/notification-matrix.md) and/or
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
+
+Also notification settings are required for
+[e-mail](mod/notification-email.md),
+[matrix](mod/notification-matrix.md),
+[ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md).
### Issues with SFTP client
@@ -74,5 +88,5 @@ See also
* [Save configuration to fallback partition](doc/backup-partition.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/capsman-download-packages.md b/doc/capsman-download-packages.md
index 0fdd6cb..c68900e 100644
--- a/doc/capsman-download-packages.md
+++ b/doc/capsman-download-packages.md
@@ -1,7 +1,14 @@
Download packages for CAP upgrade from CAPsMAN
=============================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -18,24 +25,47 @@ This script automatically downloads these packages.
Requirements and installation
-----------------------------
-Just install the script on CAPsMAN device:
+Make sure you have the `package-path` set in your CAPsMAN configuration,
+as that is where packages are downloaded to and where the system expects
+them.
+
+Then just install the script on CAPsMAN device.
+Depending on whether you use `wifi` package (`/interface/wifi`) or legacy
+wifi with CAPsMAN (`/caps-man`) you need to install a different script.
+
+For `wifi`:
+
+ $ScriptInstallUpdate capsman-download-packages.wifi;
+
+For legacy CAPsMAN:
- $ScriptInstallUpdate capsman-download-packages;
+ $ScriptInstallUpdate capsman-download-packages.capsman;
-Optionally add a scheduler to run after startup:
+Optionally add a scheduler to run after startup. For `wifi`:
- /system/scheduler/add name=capsman-download-packages on-event="/system/script/run capsman-download-packages;" start-time=startup;
+ /system/scheduler/add name=capsman-download-packages on-event="/system/script/run capsman-download-packages.wifi;" start-time=startup;
+
+For legacy CAPsMAN:
+
+ /system/scheduler/add name=capsman-download-packages on-event="/system/script/run capsman-download-packages.capsman;" start-time=startup;
Packages available in local storage in older version are downloaded
-unconditionally. The script tries to download missing packages by guessing
-from system log.
+unconditionally.
+
+If no packages are found the script downloads a default set of packages:
+
+ * `wifi`: `routeros` and `wifi-qcom` for *arm* and *arm64*, `wifi-qcom-ac` for *arm*
+ * legacy CAPsMAN: `routeros` and `wireless` for *arm* and *mipsbe*
+
+> ℹ️ **Info**: If you have packages in the directory and things go wrong for
+> what ever unknown reason: Remove **all** packages and start over.
Usage and invocation
--------------------
Run the script manually:
- /system/script/run capsman-download-packages;
+ /system/script/run capsman-download-packages.wifi;
... or from scheduler.
@@ -49,5 +79,5 @@ See also
* [Run rolling CAP upgrades from CAPsMAN](capsman-rolling-upgrade.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/capsman-rolling-upgrade.md b/doc/capsman-rolling-upgrade.md
index 94a2a79..27d855f 100644
--- a/doc/capsman-rolling-upgrade.md
+++ b/doc/capsman-rolling-upgrade.md
@@ -1,7 +1,14 @@
Run rolling CAP upgrades from CAPsMAN
=====================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -20,9 +27,17 @@ parallel.
Requirements and installation
-----------------------------
-Just install the script:
+Just install the script on CAPsMAN device.
+Depending on whether you use `wifi` package (`/interface/wifi`) or legacy
+wifi with CAPsMAN (`/caps-man`) you need to install a different script.
+
+For `wifi`:
+
+ $ScriptInstallUpdate capsman-rolling-upgrade.wifi;
+
+For legacy CAPsMAN:
- $ScriptInstallUpdate capsman-rolling-upgrade;
+ $ScriptInstallUpdate capsman-rolling-upgrade.capsman;
Usage and invocation
--------------------
@@ -33,7 +48,7 @@ that script when required.
Alternatively run it manually:
- /system/script/run capsman-rolling-upgrade;
+ /system/script/run capsman-rolling-upgrade.wifi;
See also
--------
@@ -41,5 +56,5 @@ See also
* [Download packages for CAP upgrade from CAPsMAN](capsman-download-packages.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/certificate-renew-issued.md b/doc/certificate-renew-issued.md
index d8201a7..91a1914 100644
--- a/doc/certificate-renew-issued.md
+++ b/doc/certificate-renew-issued.md
@@ -1,7 +1,14 @@
Renew locally issued certificates
=================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -28,6 +35,10 @@ parameter:
* `CertRenewPass`: an array holding individual passphrases for certificates
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
+
Usage and invocation
--------------------
@@ -46,5 +57,5 @@ See also
* [Renew certificates and notify on expiration](check-certificates.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/check-certificates.d/notification.avif b/doc/check-certificates.d/notification.avif
new file mode 100644
index 0000000..7c250da
--- /dev/null
+++ b/doc/check-certificates.d/notification.avif
Binary files differ
diff --git a/doc/check-certificates.d/notification.svg b/doc/check-certificates.d/notification.svg
deleted file mode 100644
index a299963..0000000
--- a/doc/check-certificates.d/notification.svg
+++ /dev/null
@@ -1,196 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- width="683.7796"
- height="203.77953"
- viewBox="0 0 180.9167 53.916655"
- version="1.1"
- id="svg8"
- inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
- sodipodi:docname="check-certificates.svg"
- inkscape:export-filename="logo.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <defs
- id="defs2">
- <rect
- x="180"
- y="0"
- width="658.20044"
- height="397.81946"
- id="rect4813" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.52"
- inkscape:cx="337.17105"
- inkscape:cy="90.789474"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- inkscape:document-rotation="0"
- showgrid="true"
- units="px"
- inkscape:window-width="1920"
- inkscape:window-height="1047"
- inkscape:window-x="0"
- inkscape:window-y="33"
- inkscape:window-maximized="1"
- inkscape:pagecheckerboard="0"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0">
- <inkscape:grid
- type="xygrid"
- id="grid833"
- originx="16.375009"
- originy="11.083328" />
- </sodipodi:namedview>
- <metadata
- id="metadata5">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(16.375002,11.083333)">
- <rect
- style="fill:#e6e6e6;stroke:#6c5d53;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="rect857"
- width="179.91667"
- height="52.91666"
- x="-15.875002"
- y="-10.583333"
- rx="2.2489583" />
- <g
- id="g884"
- transform="matrix(0.5,0,0,0.5,-12.40625,-7.1145834)"
- style="stroke-width:2">
- <path
- sodipodi:type="star"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264584;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="path899"
- sodipodi:sides="4"
- sodipodi:cx="12.700001"
- sodipodi:cy="12.700001"
- sodipodi:r1="14.81729"
- sodipodi:r2="10.477405"
- sodipodi:arg1="0.78539816"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="true"
- inkscape:rounded="0.2"
- inkscape:randomized="0"
- d="m 23.177407,23.177407 c -2.963458,2.963458 -17.9913546,2.963458 -20.9548127,0 -2.96345803,-2.963458 -2.96345808,-17.9913546 0,-20.9548127 2.963458,-2.96345803 17.9913547,-2.96345808 20.9548127,0 2.963458,2.963458 2.963458,17.9913547 0,20.9548127 z" />
- <g
- id="g871"
- style="stroke-width:2">
- <g
- aria-label="#!rsc"
- id="text837">
- <path
- d="M 7.483197,16.645533 V 15.621671 H 6.9371377 l 0.165768,-1.277388 H 5.8255169 l -0.165768,1.277388 h -0.975106 l 0.165768,-1.277388 H 3.5730221 l -0.165768,1.277388 H 2.7051778 v 1.023862 H 3.2707393 L 3.0269628,18.517736 H 2.3443886 v 1.023861 H 2.890448 L 2.7051778,20.935999 H 3.9825666 L 4.1678368,19.541597 H 5.1429427 L 4.9576726,20.935999 H 6.2350614 L 6.4203315,19.541597 H 7.1224078 V 18.517736 H 6.5568464 l 0.2437764,-1.872203 z m -2.2037394,1.872203 h -0.975106 l 0.2437765,-1.872203 h 0.975106 z"
- style="stroke-width:0.529163px"
- id="path851" />
- <path
- d="m 9.6186715,14.178515 h -1.638178 l 0.1950212,4.270964 h 1.2481356 z m -0.819089,5.15831 c -0.487553,0 -0.8775954,0.399794 -0.8775954,0.877596 0,0.487552 0.3900424,0.887346 0.8775954,0.887346 0.497304,0 0.8873464,-0.399794 0.8873464,-0.887346 0,-0.477802 -0.3900424,-0.877596 -0.8873464,-0.877596 z"
- style="stroke-width:0.529163px"
- id="path853" />
- <path
- d="m 13.372827,15.61192 c -0.594815,0 -1.10187,0.429047 -1.335895,1.150625 l -0.136515,-1.004359 h -1.335895 v 5.177813 h 1.540667 v -2.603533 c 0.175519,-0.770334 0.438798,-1.228633 1.072617,-1.228633 0.165768,0 0.302283,0.02925 0.468051,0.06826 l 0.243776,-1.491912 c -0.175519,-0.04875 -0.321785,-0.06826 -0.516806,-0.06826 z"
- style="stroke-width:0.529163px"
- id="path855" />
- <path
- d="m 16.181119,15.592418 c -1.306642,0 -2.11598,0.692326 -2.11598,1.579672 0,0.799587 0.507055,1.326144 1.530916,1.618676 0.936102,0.263278 1.092119,0.37054 1.092119,0.721578 0,0.312034 -0.282781,0.487553 -0.750832,0.487553 -0.507055,0 -0.984857,-0.204772 -1.374899,-0.507055 l -0.750832,0.838591 c 0.507055,0.4583 1.267638,0.770334 2.164736,0.770334 1.287139,0 2.30125,-0.633819 2.30125,-1.706435 0,-0.926351 -0.575313,-1.355398 -1.599174,-1.64793 -0.926351,-0.273029 -1.062866,-0.390042 -1.062866,-0.663072 0,-0.234025 0.204773,-0.390042 0.624068,-0.390042 0.448549,0 0.877595,0.146266 1.277389,0.399793 l 0.565561,-0.867844 C 17.604773,15.836195 16.93195,15.592418 16.181119,15.592418 Z"
- style="stroke-width:0.529163px"
- id="path857" />
- <path
- d="m 21.280919,15.592418 c -1.550418,0 -2.535275,1.150625 -2.535275,2.798554 0,1.638178 0.975106,2.710795 2.564528,2.710795 0.711828,0 1.267638,-0.234026 1.74544,-0.614317 l -0.672823,-0.955604 c -0.37054,0.234026 -0.624068,0.351038 -0.994608,0.351038 -0.614317,0 -1.023861,-0.351038 -1.023861,-1.501663 0,-1.160376 0.380291,-1.608925 1.043363,-1.608925 0.351038,0 0.653321,0.117013 0.984857,0.370541 l 0.663072,-0.9166 c -0.497304,-0.419295 -1.053114,-0.633819 -1.774693,-0.633819 z"
- style="stroke-width:0.529163px"
- id="path859" />
- </g>
- <g
- id="g1542"
- transform="matrix(2,0,0,2,-0.41134438,3.175)"
- style="stroke-width:1">
- <path
- d="M 4.9596016,-1.0195918 C 5.3675734,1.8116029 6.8867822,3.5302649 9.983482,3.6714361 7.0655129,4.7878541 4.0581782,2.1638833 4.9596016,-1.0195918"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path943" />
- <path
- d="m 3.3406657,-0.52095963 c 0.034969,-0.00777 0.038854,0.015542 0.041445,0.041445 C 3.4805417,1.3259222 4.2420891,2.6948942 5.2510098,3.6312866 6.2599306,4.5676787 7.6146558,5.3253406 9.525,5.2916667 5.9477993,6.7163303 2.1879835,3.2932527 3.3393705,-0.52095963"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path945" />
- </g>
- </g>
- </g>
- <text
- xml:space="preserve"
- transform="matrix(0.26458333,0,0,0.26458333,-45.013503,-6.6039375)"
- id="text4811"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:15px;font-family:'Fira Mono', 'Roboto Mono', monospace;-inkscape-font-specification:'Fira Mono, Roboto Mono, monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;white-space:pre;shape-inside:url(#rect4813);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="-248.88142"
- y="0"><tspan
- x="180"
- y="10.85"
- id="tspan2179">[MikroTik] 🔏 Certificate renewed
-</tspan><tspan
- x="180"
- y="25.85"
- id="tspan2181">
-</tspan><tspan
- x="180"
- y="40.85"
- id="tspan2183">A certificate on MikroTik has been renewed.
-</tspan><tspan
- x="180"
- y="55.85"
- id="tspan2185">
-</tspan><tspan
- x="180"
- y="70.85"
- id="tspan2187">Name: example.com
-</tspan><tspan
- x="180"
- y="85.85"
- id="tspan2189">CommonName: example.com
-</tspan><tspan
- x="180"
- y="100.85"
- id="tspan2191">Private key: available
-</tspan><tspan
- x="180"
- y="115.85"
- id="tspan2193">Fingerprint: cc54cdd01fcd7698ecb71213874be776906eb33d26cd57754d168632f14c4c8b
-</tspan><tspan
- x="180"
- y="130.85"
- id="tspan2195">Issuer: R3
-</tspan><tspan
- x="180"
- y="145.85"
- id="tspan2197">Validity: may/22/2021 22:29:34 to aug/20/2021 22:29:34
-</tspan><tspan
- x="180"
- y="160.85"
- id="tspan2199">Expires in: 11w 5d 08:18:06</tspan></text>
- </g>
-</svg>
diff --git a/doc/check-certificates.md b/doc/check-certificates.md
index f8a4eae..636f719 100644
--- a/doc/check-certificates.md
+++ b/doc/check-certificates.md
@@ -1,7 +1,14 @@
Renew certificates and notify on expiration
===========================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -14,7 +21,7 @@ certificates that are still about to expire.
### Sample notification
-![check-certificates notification](check-certificates.d/notification.svg)
+![check-certificates notification](check-certificates.d/notification.avif)
Requirements and installation
-----------------------------
@@ -26,18 +33,27 @@ Just install the script:
Configuration
-------------
-The expiry notifications just require notification settings for e-mail,
-[matrix](mod/notification-matrix.md) and/or
-[telegram](mod/notification-telegram.md).
-
For automatic download and renewal of certificates you need configuration
in `global-config-overlay`, these are the parameters:
* `CertRenewPass`: an array of passphrases to try
+* `CertRenewTime`: on what remaining time to try a renew
* `CertRenewUrl`: the url to download certificates from
+* `CertWarnTime`: on what remaining time to warn via notification
+
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
-Certificates on the web server should be named `CN.pem` (`PEM` format) or
-`CN.p12` (`PKCS#12` format).
+Certificates on the web server should be named by their common name, like
+`CN.pem` (`PEM` format) or`CN.p12` (`PKCS#12` format). Alternatively any
+subject alternative name (aka *Subject Alt Name* or *SAN*) can be used.
+
+Also notification settings are required for
+[e-mail](mod/notification-email.md),
+[matrix](mod/notification-matrix.md),
+[ntfy](mod/notification-ntfy.md) and/or
+[telegram](mod/notification-telegram.md).
Usage and invocation
--------------------
@@ -50,9 +66,26 @@ Just run the script:
/system/scheduler/add interval=1d name=check-certificates on-event="/system/script/run check-certificates;" start-time=startup;
-Alternatively running on startup may be desired:
- /system/scheduler/add name=check-certificates-startup on-event="/system/script/run check-certificates;" start-time=startup;
+Tips & Tricks
+-------------
+
+### Schedule at startup
+
+The script checks for full connectivity before acting, so scheduling at
+startup is perfectly valid:
+
+ /system/scheduler/add name=check-certificates@startup on-event="/system/script/run check-certificates;" start-time=startup;
+
+### Initial import
+
+Given you have a certificate on you server, you can use `check-certificates`
+for the initial import. Just create a *dummy* certificate with short lifetime
+that matches criteria to be renewed:
+
+ /certificate/add name=example.com common-name=example.com days-valid=1;
+ /certificate/sign example.com;
+ /system/script/run check-certificates;
See also
--------
@@ -60,5 +93,5 @@ See also
* [Renew locally issued certificates](certificate-renew-issued.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/check-health.d/notification-01-cpu-utilization-high.avif b/doc/check-health.d/notification-01-cpu-utilization-high.avif
new file mode 100644
index 0000000..326e7fe
--- /dev/null
+++ b/doc/check-health.d/notification-01-cpu-utilization-high.avif
Binary files differ
diff --git a/doc/check-health.d/notification-01-voltage.svg b/doc/check-health.d/notification-01-voltage.svg
deleted file mode 100644
index b762f61..0000000
--- a/doc/check-health.d/notification-01-voltage.svg
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- width="443.77954"
- height="123.77953"
- viewBox="0 0 117.41667 32.749991"
- version="1.1"
- id="svg8"
- inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
- sodipodi:docname="check-health-voltage.svg"
- inkscape:export-filename="logo.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <defs
- id="defs2">
- <rect
- x="180"
- y="0"
- width="658.20044"
- height="397.81946"
- id="rect4813" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.52"
- inkscape:cx="152.96053"
- inkscape:cy="90.789474"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- inkscape:document-rotation="0"
- showgrid="true"
- units="px"
- inkscape:window-width="1920"
- inkscape:window-height="1047"
- inkscape:window-x="0"
- inkscape:window-y="33"
- inkscape:window-maximized="1"
- inkscape:pagecheckerboard="0"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0">
- <inkscape:grid
- type="xygrid"
- id="grid833"
- originx="16.375007"
- originy="11.083327" />
- </sodipodi:namedview>
- <metadata
- id="metadata5">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(16.375001,11.083333)">
- <rect
- style="fill:#e6e6e6;stroke:#6c5d53;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="rect857"
- width="116.41666"
- height="31.749996"
- x="-15.875001"
- y="-10.583333"
- rx="1.4552082" />
- <g
- id="g884"
- transform="matrix(0.5,0,0,0.5,-12.40625,-7.1145834)"
- style="stroke-width:2">
- <path
- sodipodi:type="star"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264584;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="path899"
- sodipodi:sides="4"
- sodipodi:cx="12.700001"
- sodipodi:cy="12.700001"
- sodipodi:r1="14.81729"
- sodipodi:r2="10.477405"
- sodipodi:arg1="0.78539816"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="true"
- inkscape:rounded="0.2"
- inkscape:randomized="0"
- d="m 23.177407,23.177407 c -2.963458,2.963458 -17.9913546,2.963458 -20.9548127,0 -2.96345803,-2.963458 -2.96345808,-17.9913546 0,-20.9548127 2.963458,-2.96345803 17.9913547,-2.96345808 20.9548127,0 2.963458,2.963458 2.963458,17.9913547 0,20.9548127 z" />
- <g
- id="g871"
- style="stroke-width:2">
- <g
- aria-label="#!rsc"
- id="text837">
- <path
- d="M 7.483197,16.645533 V 15.621671 H 6.9371377 l 0.165768,-1.277388 H 5.8255169 l -0.165768,1.277388 h -0.975106 l 0.165768,-1.277388 H 3.5730221 l -0.165768,1.277388 H 2.7051778 v 1.023862 H 3.2707393 L 3.0269628,18.517736 H 2.3443886 v 1.023861 H 2.890448 L 2.7051778,20.935999 H 3.9825666 L 4.1678368,19.541597 H 5.1429427 L 4.9576726,20.935999 H 6.2350614 L 6.4203315,19.541597 H 7.1224078 V 18.517736 H 6.5568464 l 0.2437764,-1.872203 z m -2.2037394,1.872203 h -0.975106 l 0.2437765,-1.872203 h 0.975106 z"
- style="stroke-width:0.529163px"
- id="path851" />
- <path
- d="m 9.6186715,14.178515 h -1.638178 l 0.1950212,4.270964 h 1.2481356 z m -0.819089,5.15831 c -0.487553,0 -0.8775954,0.399794 -0.8775954,0.877596 0,0.487552 0.3900424,0.887346 0.8775954,0.887346 0.497304,0 0.8873464,-0.399794 0.8873464,-0.887346 0,-0.477802 -0.3900424,-0.877596 -0.8873464,-0.877596 z"
- style="stroke-width:0.529163px"
- id="path853" />
- <path
- d="m 13.372827,15.61192 c -0.594815,0 -1.10187,0.429047 -1.335895,1.150625 l -0.136515,-1.004359 h -1.335895 v 5.177813 h 1.540667 v -2.603533 c 0.175519,-0.770334 0.438798,-1.228633 1.072617,-1.228633 0.165768,0 0.302283,0.02925 0.468051,0.06826 l 0.243776,-1.491912 c -0.175519,-0.04875 -0.321785,-0.06826 -0.516806,-0.06826 z"
- style="stroke-width:0.529163px"
- id="path855" />
- <path
- d="m 16.181119,15.592418 c -1.306642,0 -2.11598,0.692326 -2.11598,1.579672 0,0.799587 0.507055,1.326144 1.530916,1.618676 0.936102,0.263278 1.092119,0.37054 1.092119,0.721578 0,0.312034 -0.282781,0.487553 -0.750832,0.487553 -0.507055,0 -0.984857,-0.204772 -1.374899,-0.507055 l -0.750832,0.838591 c 0.507055,0.4583 1.267638,0.770334 2.164736,0.770334 1.287139,0 2.30125,-0.633819 2.30125,-1.706435 0,-0.926351 -0.575313,-1.355398 -1.599174,-1.64793 -0.926351,-0.273029 -1.062866,-0.390042 -1.062866,-0.663072 0,-0.234025 0.204773,-0.390042 0.624068,-0.390042 0.448549,0 0.877595,0.146266 1.277389,0.399793 l 0.565561,-0.867844 C 17.604773,15.836195 16.93195,15.592418 16.181119,15.592418 Z"
- style="stroke-width:0.529163px"
- id="path857" />
- <path
- d="m 21.280919,15.592418 c -1.550418,0 -2.535275,1.150625 -2.535275,2.798554 0,1.638178 0.975106,2.710795 2.564528,2.710795 0.711828,0 1.267638,-0.234026 1.74544,-0.614317 l -0.672823,-0.955604 c -0.37054,0.234026 -0.624068,0.351038 -0.994608,0.351038 -0.614317,0 -1.023861,-0.351038 -1.023861,-1.501663 0,-1.160376 0.380291,-1.608925 1.043363,-1.608925 0.351038,0 0.653321,0.117013 0.984857,0.370541 l 0.663072,-0.9166 c -0.497304,-0.419295 -1.053114,-0.633819 -1.774693,-0.633819 z"
- style="stroke-width:0.529163px"
- id="path859" />
- </g>
- <g
- id="g1542"
- transform="matrix(2,0,0,2,-0.41134438,3.175)"
- style="stroke-width:1">
- <path
- d="M 4.9596016,-1.0195918 C 5.3675734,1.8116029 6.8867822,3.5302649 9.983482,3.6714361 7.0655129,4.7878541 4.0581782,2.1638833 4.9596016,-1.0195918"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path943" />
- <path
- d="m 3.3406657,-0.52095963 c 0.034969,-0.00777 0.038854,0.015542 0.041445,0.041445 C 3.4805417,1.3259222 4.2420891,2.6948942 5.2510098,3.6312866 6.2599306,4.5676787 7.6146558,5.3253406 9.525,5.2916667 5.9477993,6.7163303 2.1879835,3.2932527 3.3393705,-0.52095963"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path945" />
- </g>
- </g>
- </g>
- <text
- xml:space="preserve"
- transform="matrix(0.26458333,0,0,0.26458333,-45.077003,-6.6039379)"
- id="text4811"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:15px;font-family:'Fira Mono', 'Roboto Mono', monospace;-inkscape-font-specification:'Fira Mono, Roboto Mono, monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;white-space:pre;shape-inside:url(#rect4813);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="-248.88142"
- y="0"><tspan
- x="180"
- y="10.85"
- id="tspan13643">[MikroTik] ⚡📉 Health warning: voltage
-</tspan><tspan
- x="180"
- y="25.85"
- id="tspan13645">
-</tspan><tspan
- x="180"
- y="40.85"
- id="tspan13647">The voltage on MikroTik jumped more than 10%.
-</tspan><tspan
- x="180"
- y="55.85"
- id="tspan13649">
-</tspan><tspan
- x="180"
- y="70.85"
- id="tspan13651">old value: 16.2V
-</tspan><tspan
- x="180"
- y="85.85"
- id="tspan13653">new value: 12.4V</tspan></text>
- </g>
-</svg>
diff --git a/doc/check-health.d/notification-02-cpu-utilization-ok.avif b/doc/check-health.d/notification-02-cpu-utilization-ok.avif
new file mode 100644
index 0000000..811ccd7
--- /dev/null
+++ b/doc/check-health.d/notification-02-cpu-utilization-ok.avif
Binary files differ
diff --git a/doc/check-health.d/notification-02-temperature-high.svg b/doc/check-health.d/notification-02-temperature-high.svg
deleted file mode 100644
index 15250f8..0000000
--- a/doc/check-health.d/notification-02-temperature-high.svg
+++ /dev/null
@@ -1,164 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- width="503.77954"
- height="83.77951"
- viewBox="0 0 133.29167 22.166657"
- version="1.1"
- id="svg8"
- inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
- sodipodi:docname="check-health-temperature-high.svg"
- inkscape:export-filename="logo.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <defs
- id="defs2">
- <rect
- x="180"
- y="0"
- width="658.20044"
- height="397.81946"
- id="rect4813" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.52"
- inkscape:cx="143.09211"
- inkscape:cy="90.789474"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- inkscape:document-rotation="0"
- showgrid="true"
- units="px"
- inkscape:window-width="1920"
- inkscape:window-height="1047"
- inkscape:window-x="0"
- inkscape:window-y="33"
- inkscape:window-maximized="1"
- inkscape:pagecheckerboard="0"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0">
- <inkscape:grid
- type="xygrid"
- id="grid833"
- originx="16.375007"
- originy="11.083326" />
- </sodipodi:namedview>
- <metadata
- id="metadata5">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(16.375,11.083332)">
- <rect
- style="fill:#e6e6e6;stroke:#6c5d53;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="rect857"
- width="132.29166"
- height="21.166662"
- x="-15.875001"
- y="-10.583333"
- rx="1.6536458" />
- <g
- id="g884"
- transform="matrix(0.5,0,0,0.5,-12.40625,-7.1145834)"
- style="stroke-width:2">
- <path
- sodipodi:type="star"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264584;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="path899"
- sodipodi:sides="4"
- sodipodi:cx="12.700001"
- sodipodi:cy="12.700001"
- sodipodi:r1="14.81729"
- sodipodi:r2="10.477405"
- sodipodi:arg1="0.78539816"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="true"
- inkscape:rounded="0.2"
- inkscape:randomized="0"
- d="m 23.177407,23.177407 c -2.963458,2.963458 -17.9913546,2.963458 -20.9548127,0 -2.96345803,-2.963458 -2.96345808,-17.9913546 0,-20.9548127 2.963458,-2.96345803 17.9913547,-2.96345808 20.9548127,0 2.963458,2.963458 2.963458,17.9913547 0,20.9548127 z" />
- <g
- id="g871"
- style="stroke-width:2">
- <g
- aria-label="#!rsc"
- id="text837">
- <path
- d="M 7.483197,16.645533 V 15.621671 H 6.9371377 l 0.165768,-1.277388 H 5.8255169 l -0.165768,1.277388 h -0.975106 l 0.165768,-1.277388 H 3.5730221 l -0.165768,1.277388 H 2.7051778 v 1.023862 H 3.2707393 L 3.0269628,18.517736 H 2.3443886 v 1.023861 H 2.890448 L 2.7051778,20.935999 H 3.9825666 L 4.1678368,19.541597 H 5.1429427 L 4.9576726,20.935999 H 6.2350614 L 6.4203315,19.541597 H 7.1224078 V 18.517736 H 6.5568464 l 0.2437764,-1.872203 z m -2.2037394,1.872203 h -0.975106 l 0.2437765,-1.872203 h 0.975106 z"
- style="stroke-width:0.529163px"
- id="path851" />
- <path
- d="m 9.6186715,14.178515 h -1.638178 l 0.1950212,4.270964 h 1.2481356 z m -0.819089,5.15831 c -0.487553,0 -0.8775954,0.399794 -0.8775954,0.877596 0,0.487552 0.3900424,0.887346 0.8775954,0.887346 0.497304,0 0.8873464,-0.399794 0.8873464,-0.887346 0,-0.477802 -0.3900424,-0.877596 -0.8873464,-0.877596 z"
- style="stroke-width:0.529163px"
- id="path853" />
- <path
- d="m 13.372827,15.61192 c -0.594815,0 -1.10187,0.429047 -1.335895,1.150625 l -0.136515,-1.004359 h -1.335895 v 5.177813 h 1.540667 v -2.603533 c 0.175519,-0.770334 0.438798,-1.228633 1.072617,-1.228633 0.165768,0 0.302283,0.02925 0.468051,0.06826 l 0.243776,-1.491912 c -0.175519,-0.04875 -0.321785,-0.06826 -0.516806,-0.06826 z"
- style="stroke-width:0.529163px"
- id="path855" />
- <path
- d="m 16.181119,15.592418 c -1.306642,0 -2.11598,0.692326 -2.11598,1.579672 0,0.799587 0.507055,1.326144 1.530916,1.618676 0.936102,0.263278 1.092119,0.37054 1.092119,0.721578 0,0.312034 -0.282781,0.487553 -0.750832,0.487553 -0.507055,0 -0.984857,-0.204772 -1.374899,-0.507055 l -0.750832,0.838591 c 0.507055,0.4583 1.267638,0.770334 2.164736,0.770334 1.287139,0 2.30125,-0.633819 2.30125,-1.706435 0,-0.926351 -0.575313,-1.355398 -1.599174,-1.64793 -0.926351,-0.273029 -1.062866,-0.390042 -1.062866,-0.663072 0,-0.234025 0.204773,-0.390042 0.624068,-0.390042 0.448549,0 0.877595,0.146266 1.277389,0.399793 l 0.565561,-0.867844 C 17.604773,15.836195 16.93195,15.592418 16.181119,15.592418 Z"
- style="stroke-width:0.529163px"
- id="path857" />
- <path
- d="m 21.280919,15.592418 c -1.550418,0 -2.535275,1.150625 -2.535275,2.798554 0,1.638178 0.975106,2.710795 2.564528,2.710795 0.711828,0 1.267638,-0.234026 1.74544,-0.614317 l -0.672823,-0.955604 c -0.37054,0.234026 -0.624068,0.351038 -0.994608,0.351038 -0.614317,0 -1.023861,-0.351038 -1.023861,-1.501663 0,-1.160376 0.380291,-1.608925 1.043363,-1.608925 0.351038,0 0.653321,0.117013 0.984857,0.370541 l 0.663072,-0.9166 c -0.497304,-0.419295 -1.053114,-0.633819 -1.774693,-0.633819 z"
- style="stroke-width:0.529163px"
- id="path859" />
- </g>
- <g
- id="g1542"
- transform="matrix(2,0,0,2,-0.41134438,3.175)"
- style="stroke-width:1">
- <path
- d="M 4.9596016,-1.0195918 C 5.3675734,1.8116029 6.8867822,3.5302649 9.983482,3.6714361 7.0655129,4.7878541 4.0581782,2.1638833 4.9596016,-1.0195918"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path943" />
- <path
- d="m 3.3406657,-0.52095963 c 0.034969,-0.00777 0.038854,0.015542 0.041445,0.041445 C 3.4805417,1.3259222 4.2420891,2.6948942 5.2510098,3.6312866 6.2599306,4.5676787 7.6146558,5.3253406 9.525,5.2916667 5.9477993,6.7163303 2.1879835,3.2932527 3.3393705,-0.52095963"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path945" />
- </g>
- </g>
- </g>
- <text
- xml:space="preserve"
- transform="matrix(0.26458333,0,0,0.26458333,-45.077002,-6.6039367)"
- id="text4811"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:15px;font-family:'Fira Mono', 'Roboto Mono', monospace;-inkscape-font-specification:'Fira Mono, Roboto Mono, monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;white-space:pre;shape-inside:url(#rect4813);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="-248.88142"
- y="0"><tspan
- x="180"
- y="10.85"
- id="tspan13709">[MikroTik] 🔥 Health warning: temperature
-</tspan><tspan
- x="180"
- y="25.85"
- id="tspan13711">
-</tspan><tspan
- x="180"
- y="40.85"
- id="tspan13713">The temperature on MikroTik is above threshold: 51°C</tspan></text>
- </g>
-</svg>
diff --git a/doc/check-health.d/notification-03-ram-utilization-high.avif b/doc/check-health.d/notification-03-ram-utilization-high.avif
new file mode 100644
index 0000000..59155c5
--- /dev/null
+++ b/doc/check-health.d/notification-03-ram-utilization-high.avif
Binary files differ
diff --git a/doc/check-health.d/notification-03-temperature-ok.svg b/doc/check-health.d/notification-03-temperature-ok.svg
deleted file mode 100644
index d517e57..0000000
--- a/doc/check-health.d/notification-03-temperature-ok.svg
+++ /dev/null
@@ -1,164 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- width="533.77954"
- height="83.77951"
- viewBox="0 0 141.22918 22.166657"
- version="1.1"
- id="svg8"
- inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
- sodipodi:docname="check-health-temperature-ok.svg"
- inkscape:export-filename="logo.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <defs
- id="defs2">
- <rect
- x="180"
- y="0"
- width="658.20044"
- height="397.81946"
- id="rect4813" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.52"
- inkscape:cx="127.96053"
- inkscape:cy="90.789474"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- inkscape:document-rotation="0"
- showgrid="true"
- units="px"
- inkscape:window-width="1920"
- inkscape:window-height="1047"
- inkscape:window-x="0"
- inkscape:window-y="33"
- inkscape:window-maximized="1"
- inkscape:pagecheckerboard="0"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0">
- <inkscape:grid
- type="xygrid"
- id="grid833"
- originx="16.37501"
- originy="11.083325" />
- </sodipodi:namedview>
- <metadata
- id="metadata5">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(16.375,11.083333)">
- <rect
- style="fill:#e6e6e6;stroke:#6c5d53;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="rect857"
- width="140.22916"
- height="21.16666"
- x="-15.875"
- y="-10.583333"
- rx="1.7528646" />
- <g
- id="g884"
- transform="matrix(0.5,0,0,0.5,-12.40625,-7.1145834)"
- style="stroke-width:2">
- <path
- sodipodi:type="star"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264584;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="path899"
- sodipodi:sides="4"
- sodipodi:cx="12.700001"
- sodipodi:cy="12.700001"
- sodipodi:r1="14.81729"
- sodipodi:r2="10.477405"
- sodipodi:arg1="0.78539816"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="true"
- inkscape:rounded="0.2"
- inkscape:randomized="0"
- d="m 23.177407,23.177407 c -2.963458,2.963458 -17.9913546,2.963458 -20.9548127,0 -2.96345803,-2.963458 -2.96345808,-17.9913546 0,-20.9548127 2.963458,-2.96345803 17.9913547,-2.96345808 20.9548127,0 2.963458,2.963458 2.963458,17.9913547 0,20.9548127 z" />
- <g
- id="g871"
- style="stroke-width:2">
- <g
- aria-label="#!rsc"
- id="text837">
- <path
- d="M 7.483197,16.645533 V 15.621671 H 6.9371377 l 0.165768,-1.277388 H 5.8255169 l -0.165768,1.277388 h -0.975106 l 0.165768,-1.277388 H 3.5730221 l -0.165768,1.277388 H 2.7051778 v 1.023862 H 3.2707393 L 3.0269628,18.517736 H 2.3443886 v 1.023861 H 2.890448 L 2.7051778,20.935999 H 3.9825666 L 4.1678368,19.541597 H 5.1429427 L 4.9576726,20.935999 H 6.2350614 L 6.4203315,19.541597 H 7.1224078 V 18.517736 H 6.5568464 l 0.2437764,-1.872203 z m -2.2037394,1.872203 h -0.975106 l 0.2437765,-1.872203 h 0.975106 z"
- style="stroke-width:0.529163px"
- id="path851" />
- <path
- d="m 9.6186715,14.178515 h -1.638178 l 0.1950212,4.270964 h 1.2481356 z m -0.819089,5.15831 c -0.487553,0 -0.8775954,0.399794 -0.8775954,0.877596 0,0.487552 0.3900424,0.887346 0.8775954,0.887346 0.497304,0 0.8873464,-0.399794 0.8873464,-0.887346 0,-0.477802 -0.3900424,-0.877596 -0.8873464,-0.877596 z"
- style="stroke-width:0.529163px"
- id="path853" />
- <path
- d="m 13.372827,15.61192 c -0.594815,0 -1.10187,0.429047 -1.335895,1.150625 l -0.136515,-1.004359 h -1.335895 v 5.177813 h 1.540667 v -2.603533 c 0.175519,-0.770334 0.438798,-1.228633 1.072617,-1.228633 0.165768,0 0.302283,0.02925 0.468051,0.06826 l 0.243776,-1.491912 c -0.175519,-0.04875 -0.321785,-0.06826 -0.516806,-0.06826 z"
- style="stroke-width:0.529163px"
- id="path855" />
- <path
- d="m 16.181119,15.592418 c -1.306642,0 -2.11598,0.692326 -2.11598,1.579672 0,0.799587 0.507055,1.326144 1.530916,1.618676 0.936102,0.263278 1.092119,0.37054 1.092119,0.721578 0,0.312034 -0.282781,0.487553 -0.750832,0.487553 -0.507055,0 -0.984857,-0.204772 -1.374899,-0.507055 l -0.750832,0.838591 c 0.507055,0.4583 1.267638,0.770334 2.164736,0.770334 1.287139,0 2.30125,-0.633819 2.30125,-1.706435 0,-0.926351 -0.575313,-1.355398 -1.599174,-1.64793 -0.926351,-0.273029 -1.062866,-0.390042 -1.062866,-0.663072 0,-0.234025 0.204773,-0.390042 0.624068,-0.390042 0.448549,0 0.877595,0.146266 1.277389,0.399793 l 0.565561,-0.867844 C 17.604773,15.836195 16.93195,15.592418 16.181119,15.592418 Z"
- style="stroke-width:0.529163px"
- id="path857" />
- <path
- d="m 21.280919,15.592418 c -1.550418,0 -2.535275,1.150625 -2.535275,2.798554 0,1.638178 0.975106,2.710795 2.564528,2.710795 0.711828,0 1.267638,-0.234026 1.74544,-0.614317 l -0.672823,-0.955604 c -0.37054,0.234026 -0.624068,0.351038 -0.994608,0.351038 -0.614317,0 -1.023861,-0.351038 -1.023861,-1.501663 0,-1.160376 0.380291,-1.608925 1.043363,-1.608925 0.351038,0 0.653321,0.117013 0.984857,0.370541 l 0.663072,-0.9166 c -0.497304,-0.419295 -1.053114,-0.633819 -1.774693,-0.633819 z"
- style="stroke-width:0.529163px"
- id="path859" />
- </g>
- <g
- id="g1542"
- transform="matrix(2,0,0,2,-0.41134438,3.175)"
- style="stroke-width:1">
- <path
- d="M 4.9596016,-1.0195918 C 5.3675734,1.8116029 6.8867822,3.5302649 9.983482,3.6714361 7.0655129,4.7878541 4.0581782,2.1638833 4.9596016,-1.0195918"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path943" />
- <path
- d="m 3.3406657,-0.52095963 c 0.034969,-0.00777 0.038854,0.015542 0.041445,0.041445 C 3.4805417,1.3259222 4.2420891,2.6948942 5.2510098,3.6312866 6.2599306,4.5676787 7.6146558,5.3253406 9.525,5.2916667 5.9477993,6.7163303 2.1879835,3.2932527 3.3393705,-0.52095963"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path945" />
- </g>
- </g>
- </g>
- <text
- xml:space="preserve"
- transform="matrix(0.26458333,0,0,0.26458333,-45.077001,-6.6039376)"
- id="text4811"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:15px;font-family:'Fira Mono', 'Roboto Mono', monospace;-inkscape-font-specification:'Fira Mono, Roboto Mono, monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;white-space:pre;shape-inside:url(#rect4813);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="-248.88142"
- y="0"><tspan
- x="180"
- y="10.85"
- id="tspan13679">[MikroTik] ✅ Health recovery: temperature
-</tspan><tspan
- x="180"
- y="25.85"
- id="tspan13681">
-</tspan><tspan
- x="180"
- y="40.85"
- id="tspan13683">The temperature on MikroTik dropped below threshold: 48°C</tspan></text>
- </g>
-</svg>
diff --git a/doc/check-health.d/notification-04-psu-fail.svg b/doc/check-health.d/notification-04-psu-fail.svg
deleted file mode 100644
index 5d5d573..0000000
--- a/doc/check-health.d/notification-04-psu-fail.svg
+++ /dev/null
@@ -1,164 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- width="513.7796"
- height="83.779518"
- viewBox="0 0 135.93752 22.166659"
- version="1.1"
- id="svg8"
- inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
- sodipodi:docname="check-health-psu-fail.svg"
- inkscape:export-filename="logo.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <defs
- id="defs2">
- <rect
- x="180"
- y="0"
- width="658.20044"
- height="397.81946"
- id="rect4813" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.52"
- inkscape:cx="133.22368"
- inkscape:cy="90.789474"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- inkscape:document-rotation="0"
- showgrid="true"
- units="px"
- inkscape:window-width="1920"
- inkscape:window-height="1047"
- inkscape:window-x="0"
- inkscape:window-y="33"
- inkscape:window-maximized="1"
- inkscape:pagecheckerboard="0"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0">
- <inkscape:grid
- type="xygrid"
- id="grid833"
- originx="16.375009"
- originy="11.083327" />
- </sodipodi:namedview>
- <metadata
- id="metadata5">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(16.375001,11.083333)">
- <rect
- style="fill:#e6e6e6;stroke:#6c5d53;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="rect857"
- width="134.9375"
- height="21.166662"
- x="-15.875001"
- y="-10.583333"
- rx="1.6867187" />
- <g
- id="g884"
- transform="matrix(0.5,0,0,0.5,-12.40625,-7.1145834)"
- style="stroke-width:2">
- <path
- sodipodi:type="star"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264584;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="path899"
- sodipodi:sides="4"
- sodipodi:cx="12.700001"
- sodipodi:cy="12.700001"
- sodipodi:r1="14.81729"
- sodipodi:r2="10.477405"
- sodipodi:arg1="0.78539816"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="true"
- inkscape:rounded="0.2"
- inkscape:randomized="0"
- d="m 23.177407,23.177407 c -2.963458,2.963458 -17.9913546,2.963458 -20.9548127,0 -2.96345803,-2.963458 -2.96345808,-17.9913546 0,-20.9548127 2.963458,-2.96345803 17.9913547,-2.96345808 20.9548127,0 2.963458,2.963458 2.963458,17.9913547 0,20.9548127 z" />
- <g
- id="g871"
- style="stroke-width:2">
- <g
- aria-label="#!rsc"
- id="text837">
- <path
- d="M 7.483197,16.645533 V 15.621671 H 6.9371377 l 0.165768,-1.277388 H 5.8255169 l -0.165768,1.277388 h -0.975106 l 0.165768,-1.277388 H 3.5730221 l -0.165768,1.277388 H 2.7051778 v 1.023862 H 3.2707393 L 3.0269628,18.517736 H 2.3443886 v 1.023861 H 2.890448 L 2.7051778,20.935999 H 3.9825666 L 4.1678368,19.541597 H 5.1429427 L 4.9576726,20.935999 H 6.2350614 L 6.4203315,19.541597 H 7.1224078 V 18.517736 H 6.5568464 l 0.2437764,-1.872203 z m -2.2037394,1.872203 h -0.975106 l 0.2437765,-1.872203 h 0.975106 z"
- style="stroke-width:0.529163px"
- id="path851" />
- <path
- d="m 9.6186715,14.178515 h -1.638178 l 0.1950212,4.270964 h 1.2481356 z m -0.819089,5.15831 c -0.487553,0 -0.8775954,0.399794 -0.8775954,0.877596 0,0.487552 0.3900424,0.887346 0.8775954,0.887346 0.497304,0 0.8873464,-0.399794 0.8873464,-0.887346 0,-0.477802 -0.3900424,-0.877596 -0.8873464,-0.877596 z"
- style="stroke-width:0.529163px"
- id="path853" />
- <path
- d="m 13.372827,15.61192 c -0.594815,0 -1.10187,0.429047 -1.335895,1.150625 l -0.136515,-1.004359 h -1.335895 v 5.177813 h 1.540667 v -2.603533 c 0.175519,-0.770334 0.438798,-1.228633 1.072617,-1.228633 0.165768,0 0.302283,0.02925 0.468051,0.06826 l 0.243776,-1.491912 c -0.175519,-0.04875 -0.321785,-0.06826 -0.516806,-0.06826 z"
- style="stroke-width:0.529163px"
- id="path855" />
- <path
- d="m 16.181119,15.592418 c -1.306642,0 -2.11598,0.692326 -2.11598,1.579672 0,0.799587 0.507055,1.326144 1.530916,1.618676 0.936102,0.263278 1.092119,0.37054 1.092119,0.721578 0,0.312034 -0.282781,0.487553 -0.750832,0.487553 -0.507055,0 -0.984857,-0.204772 -1.374899,-0.507055 l -0.750832,0.838591 c 0.507055,0.4583 1.267638,0.770334 2.164736,0.770334 1.287139,0 2.30125,-0.633819 2.30125,-1.706435 0,-0.926351 -0.575313,-1.355398 -1.599174,-1.64793 -0.926351,-0.273029 -1.062866,-0.390042 -1.062866,-0.663072 0,-0.234025 0.204773,-0.390042 0.624068,-0.390042 0.448549,0 0.877595,0.146266 1.277389,0.399793 l 0.565561,-0.867844 C 17.604773,15.836195 16.93195,15.592418 16.181119,15.592418 Z"
- style="stroke-width:0.529163px"
- id="path857" />
- <path
- d="m 21.280919,15.592418 c -1.550418,0 -2.535275,1.150625 -2.535275,2.798554 0,1.638178 0.975106,2.710795 2.564528,2.710795 0.711828,0 1.267638,-0.234026 1.74544,-0.614317 l -0.672823,-0.955604 c -0.37054,0.234026 -0.624068,0.351038 -0.994608,0.351038 -0.614317,0 -1.023861,-0.351038 -1.023861,-1.501663 0,-1.160376 0.380291,-1.608925 1.043363,-1.608925 0.351038,0 0.653321,0.117013 0.984857,0.370541 l 0.663072,-0.9166 c -0.497304,-0.419295 -1.053114,-0.633819 -1.774693,-0.633819 z"
- style="stroke-width:0.529163px"
- id="path859" />
- </g>
- <g
- id="g1542"
- transform="matrix(2,0,0,2,-0.41134438,3.175)"
- style="stroke-width:1">
- <path
- d="M 4.9596016,-1.0195918 C 5.3675734,1.8116029 6.8867822,3.5302649 9.983482,3.6714361 7.0655129,4.7878541 4.0581782,2.1638833 4.9596016,-1.0195918"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path943" />
- <path
- d="m 3.3406657,-0.52095963 c 0.034969,-0.00777 0.038854,0.015542 0.041445,0.041445 C 3.4805417,1.3259222 4.2420891,2.6948942 5.2510098,3.6312866 6.2599306,4.5676787 7.6146558,5.3253406 9.525,5.2916667 5.9477993,6.7163303 2.1879835,3.2932527 3.3393705,-0.52095963"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path945" />
- </g>
- </g>
- </g>
- <text
- xml:space="preserve"
- transform="matrix(0.26458333,0,0,0.26458333,-45.077003,-6.6039377)"
- id="text4811"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:15px;font-family:'Fira Mono', 'Roboto Mono', monospace;-inkscape-font-specification:'Fira Mono, Roboto Mono, monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;white-space:pre;shape-inside:url(#rect4813);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="-248.88142"
- y="0"><tspan
- x="180"
- y="10.85"
- id="tspan2171">[MikroTik] ❌ Health warning: psu1-state
-</tspan><tspan
- x="180"
- y="25.85"
- id="tspan2173">
-</tspan><tspan
- x="180"
- y="40.85"
- id="tspan2175">The power supply unit 'psu1-state' on MikroTik failed!</tspan></text>
- </g>
-</svg>
diff --git a/doc/check-health.d/notification-04-ram-utilization-ok.avif b/doc/check-health.d/notification-04-ram-utilization-ok.avif
new file mode 100644
index 0000000..d995b9a
--- /dev/null
+++ b/doc/check-health.d/notification-04-ram-utilization-ok.avif
Binary files differ
diff --git a/doc/check-health.d/notification-05-psu-ok.svg b/doc/check-health.d/notification-05-psu-ok.svg
deleted file mode 100644
index aae56c9..0000000
--- a/doc/check-health.d/notification-05-psu-ok.svg
+++ /dev/null
@@ -1,164 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- width="533.77954"
- height="83.779518"
- viewBox="0 0 141.22918 22.166659"
- version="1.1"
- id="svg8"
- inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
- sodipodi:docname="check-health-psu-ok.svg"
- inkscape:export-filename="logo.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <defs
- id="defs2">
- <rect
- x="180"
- y="0"
- width="658.20044"
- height="397.81946"
- id="rect4813" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.52"
- inkscape:cx="155.59211"
- inkscape:cy="90.789474"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- inkscape:document-rotation="0"
- showgrid="true"
- units="px"
- inkscape:window-width="1920"
- inkscape:window-height="1047"
- inkscape:window-x="0"
- inkscape:window-y="33"
- inkscape:window-maximized="1"
- inkscape:pagecheckerboard="0"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0">
- <inkscape:grid
- type="xygrid"
- id="grid833"
- originx="16.37501"
- originy="11.083327" />
- </sodipodi:namedview>
- <metadata
- id="metadata5">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(16.375001,11.083333)">
- <rect
- style="fill:#e6e6e6;stroke:#6c5d53;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="rect857"
- width="140.22916"
- height="21.166662"
- x="-15.875001"
- y="-10.583333"
- rx="1.7528646" />
- <g
- id="g884"
- transform="matrix(0.5,0,0,0.5,-12.40625,-7.1145834)"
- style="stroke-width:2">
- <path
- sodipodi:type="star"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264584;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="path899"
- sodipodi:sides="4"
- sodipodi:cx="12.700001"
- sodipodi:cy="12.700001"
- sodipodi:r1="14.81729"
- sodipodi:r2="10.477405"
- sodipodi:arg1="0.78539816"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="true"
- inkscape:rounded="0.2"
- inkscape:randomized="0"
- d="m 23.177407,23.177407 c -2.963458,2.963458 -17.9913546,2.963458 -20.9548127,0 -2.96345803,-2.963458 -2.96345808,-17.9913546 0,-20.9548127 2.963458,-2.96345803 17.9913547,-2.96345808 20.9548127,0 2.963458,2.963458 2.963458,17.9913547 0,20.9548127 z" />
- <g
- id="g871"
- style="stroke-width:2">
- <g
- aria-label="#!rsc"
- id="text837">
- <path
- d="M 7.483197,16.645533 V 15.621671 H 6.9371377 l 0.165768,-1.277388 H 5.8255169 l -0.165768,1.277388 h -0.975106 l 0.165768,-1.277388 H 3.5730221 l -0.165768,1.277388 H 2.7051778 v 1.023862 H 3.2707393 L 3.0269628,18.517736 H 2.3443886 v 1.023861 H 2.890448 L 2.7051778,20.935999 H 3.9825666 L 4.1678368,19.541597 H 5.1429427 L 4.9576726,20.935999 H 6.2350614 L 6.4203315,19.541597 H 7.1224078 V 18.517736 H 6.5568464 l 0.2437764,-1.872203 z m -2.2037394,1.872203 h -0.975106 l 0.2437765,-1.872203 h 0.975106 z"
- style="stroke-width:0.529163px"
- id="path851" />
- <path
- d="m 9.6186715,14.178515 h -1.638178 l 0.1950212,4.270964 h 1.2481356 z m -0.819089,5.15831 c -0.487553,0 -0.8775954,0.399794 -0.8775954,0.877596 0,0.487552 0.3900424,0.887346 0.8775954,0.887346 0.497304,0 0.8873464,-0.399794 0.8873464,-0.887346 0,-0.477802 -0.3900424,-0.877596 -0.8873464,-0.877596 z"
- style="stroke-width:0.529163px"
- id="path853" />
- <path
- d="m 13.372827,15.61192 c -0.594815,0 -1.10187,0.429047 -1.335895,1.150625 l -0.136515,-1.004359 h -1.335895 v 5.177813 h 1.540667 v -2.603533 c 0.175519,-0.770334 0.438798,-1.228633 1.072617,-1.228633 0.165768,0 0.302283,0.02925 0.468051,0.06826 l 0.243776,-1.491912 c -0.175519,-0.04875 -0.321785,-0.06826 -0.516806,-0.06826 z"
- style="stroke-width:0.529163px"
- id="path855" />
- <path
- d="m 16.181119,15.592418 c -1.306642,0 -2.11598,0.692326 -2.11598,1.579672 0,0.799587 0.507055,1.326144 1.530916,1.618676 0.936102,0.263278 1.092119,0.37054 1.092119,0.721578 0,0.312034 -0.282781,0.487553 -0.750832,0.487553 -0.507055,0 -0.984857,-0.204772 -1.374899,-0.507055 l -0.750832,0.838591 c 0.507055,0.4583 1.267638,0.770334 2.164736,0.770334 1.287139,0 2.30125,-0.633819 2.30125,-1.706435 0,-0.926351 -0.575313,-1.355398 -1.599174,-1.64793 -0.926351,-0.273029 -1.062866,-0.390042 -1.062866,-0.663072 0,-0.234025 0.204773,-0.390042 0.624068,-0.390042 0.448549,0 0.877595,0.146266 1.277389,0.399793 l 0.565561,-0.867844 C 17.604773,15.836195 16.93195,15.592418 16.181119,15.592418 Z"
- style="stroke-width:0.529163px"
- id="path857" />
- <path
- d="m 21.280919,15.592418 c -1.550418,0 -2.535275,1.150625 -2.535275,2.798554 0,1.638178 0.975106,2.710795 2.564528,2.710795 0.711828,0 1.267638,-0.234026 1.74544,-0.614317 l -0.672823,-0.955604 c -0.37054,0.234026 -0.624068,0.351038 -0.994608,0.351038 -0.614317,0 -1.023861,-0.351038 -1.023861,-1.501663 0,-1.160376 0.380291,-1.608925 1.043363,-1.608925 0.351038,0 0.653321,0.117013 0.984857,0.370541 l 0.663072,-0.9166 c -0.497304,-0.419295 -1.053114,-0.633819 -1.774693,-0.633819 z"
- style="stroke-width:0.529163px"
- id="path859" />
- </g>
- <g
- id="g1542"
- transform="matrix(2,0,0,2,-0.41134438,3.175)"
- style="stroke-width:1">
- <path
- d="M 4.9596016,-1.0195918 C 5.3675734,1.8116029 6.8867822,3.5302649 9.983482,3.6714361 7.0655129,4.7878541 4.0581782,2.1638833 4.9596016,-1.0195918"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path943" />
- <path
- d="m 3.3406657,-0.52095963 c 0.034969,-0.00777 0.038854,0.015542 0.041445,0.041445 C 3.4805417,1.3259222 4.2420891,2.6948942 5.2510098,3.6312866 6.2599306,4.5676787 7.6146558,5.3253406 9.525,5.2916667 5.9477993,6.7163303 2.1879835,3.2932527 3.3393705,-0.52095963"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path945" />
- </g>
- </g>
- </g>
- <text
- xml:space="preserve"
- transform="matrix(0.26458333,0,0,0.26458333,-45.077002,-6.6039376)"
- id="text4811"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:15px;font-family:'Fira Mono', 'Roboto Mono', monospace;-inkscape-font-specification:'Fira Mono, Roboto Mono, monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;white-space:pre;shape-inside:url(#rect4813);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="-248.88142"
- y="0"><tspan
- x="180"
- y="10.85"
- id="tspan13739">[MikroTik] ✅ Health recovery: psu1-state
-</tspan><tspan
- x="180"
- y="25.85"
- id="tspan13741">
-</tspan><tspan
- x="180"
- y="40.85"
- id="tspan13743">The power supply unit 'psu1-state' on MikroTik recovered!</tspan></text>
- </g>
-</svg>
diff --git a/doc/check-health.d/notification-05-voltage.avif b/doc/check-health.d/notification-05-voltage.avif
new file mode 100644
index 0000000..17a385b
--- /dev/null
+++ b/doc/check-health.d/notification-05-voltage.avif
Binary files differ
diff --git a/doc/check-health.d/notification-06-temperature-high.avif b/doc/check-health.d/notification-06-temperature-high.avif
new file mode 100644
index 0000000..60d3802
--- /dev/null
+++ b/doc/check-health.d/notification-06-temperature-high.avif
Binary files differ
diff --git a/doc/check-health.d/notification-07-temperature-ok.avif b/doc/check-health.d/notification-07-temperature-ok.avif
new file mode 100644
index 0000000..4afed02
--- /dev/null
+++ b/doc/check-health.d/notification-07-temperature-ok.avif
Binary files differ
diff --git a/doc/check-health.d/notification-08-psu-fail.avif b/doc/check-health.d/notification-08-psu-fail.avif
new file mode 100644
index 0000000..ad049ac
--- /dev/null
+++ b/doc/check-health.d/notification-08-psu-fail.avif
Binary files differ
diff --git a/doc/check-health.d/notification-09-psu-ok.avif b/doc/check-health.d/notification-09-psu-ok.avif
new file mode 100644
index 0000000..26f5a74
--- /dev/null
+++ b/doc/check-health.d/notification-09-psu-ok.avif
Binary files differ
diff --git a/doc/check-health.md b/doc/check-health.md
index 52efa4c..f94a0bf 100644
--- a/doc/check-health.md
+++ b/doc/check-health.md
@@ -1,7 +1,14 @@
Notify about health state
=========================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -12,32 +19,46 @@ Description
This script is run from scheduler periodically, sending notification on
health related events:
-* voltage jumps up or down more than configured threshold or drops below limit
+* high CPU utilization
+* high RAM utilization (low available RAM)
+* voltage jumps up or down more than configured threshold
+* voltage drops below hard lower limit
* power supply failed or recovered
* temperature is above or below threshold
Note that bad initial state will not trigger an event.
-Only sensors available in hardware can be checked. See what your
-hardware supports:
+Monitoring CPU and RAM utilization (available processing and memory
+resources) works on all devices. Other than that only sensors available
+in hardware can be checked. See what your hardware supports:
/system/health/print;
### Sample notifications
+#### CPU utilization
+
+![check-health notification cpu utilization high](check-health.d/notification-01-cpu-utilization-high.avif)
+![check-health notification cpu utilization ok](check-health.d/notification-02-cpu-utilization-ok.avif)
+
+#### RAM utilization (low available RAM)
+
+![check-health notification ram utilization high](check-health.d/notification-03-ram-utilization-high.avif)
+![check-health notification ram utilization ok](check-health.d/notification-04-ram-utilization-ok.avif)
+
#### Voltage
-![check-health notification voltage](check-health.d/notification-01-voltage.svg)
+![check-health notification voltage](check-health.d/notification-05-voltage.avif)
#### Temperature
-![check-health notification](check-health.d/notification-02-temperature-high.svg)
-![check-health notification](check-health.d/notification-03-temperature-ok.svg)
+![check-health notification temperature high](check-health.d/notification-06-temperature-high.avif)
+![check-health notification temperature ok](check-health.d/notification-07-temperature-ok.avif)
#### PSU state
-![check-health notification](check-health.d/notification-04-psu-fail.svg)
-![check-health notification](check-health.d/notification-05-psu-ok.svg)
+![check-health notification psu fail](check-health.d/notification-08-psu-fail.avif)
+![check-health notification psu ok](check-health.d/notification-09-psu-ok.avif)
Requirements and installation
-----------------------------
@@ -45,7 +66,11 @@ Requirements and installation
Just install the script and create a scheduler:
$ScriptInstallUpdate check-health;
- /system/scheduler/add interval=1m name=check-health on-event="/system/script/run check-health;" start-time=startup;
+ /system/scheduler/add interval=53s name=check-health on-event="/system/script/run check-health;" start-time=startup;
+
+> ℹ️ **Info**: Running lots of scripts simultaneously can tamper the
+> precision of cpu utilization, escpecially on devices with limited
+> resources. Thus an unusual interval is used here.
Configuration
-------------
@@ -56,10 +81,16 @@ The configuration goes to `global-config-overlay`, these are the parameters:
* `CheckHealthVoltageLow`: value (in volt*10) giving a hard lower limit
* `CheckHealthVoltagePercent`: percentage value to trigger voltage jumps
-Also notification settings are required for e-mail,
-[matrix](mod/notification-matrix.md) and/or
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
+
+Also notification settings are required for
+[e-mail](mod/notification-email.md),
+[matrix](mod/notification-matrix.md),
+[ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md).
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/check-lte-firmware-upgrade.d/notification.avif b/doc/check-lte-firmware-upgrade.d/notification.avif
new file mode 100644
index 0000000..c440da5
--- /dev/null
+++ b/doc/check-lte-firmware-upgrade.d/notification.avif
Binary files differ
diff --git a/doc/check-lte-firmware-upgrade.d/notification.svg b/doc/check-lte-firmware-upgrade.d/notification.svg
deleted file mode 100644
index 70aad88..0000000
--- a/doc/check-lte-firmware-upgrade.d/notification.svg
+++ /dev/null
@@ -1,184 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- width="483.77957"
- height="153.77951"
- viewBox="0 0 128.00002 40.687487"
- version="1.1"
- id="svg8"
- inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
- sodipodi:docname="check-lte-firmware-upgrade.svg"
- inkscape:export-filename="logo.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <defs
- id="defs2">
- <rect
- x="180"
- y="0"
- width="658.20044"
- height="397.81946"
- id="rect4813" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.52"
- inkscape:cx="105.59211"
- inkscape:cy="90.789474"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- inkscape:document-rotation="0"
- showgrid="true"
- units="px"
- inkscape:window-width="1920"
- inkscape:window-height="1047"
- inkscape:window-x="0"
- inkscape:window-y="33"
- inkscape:window-maximized="1"
- inkscape:pagecheckerboard="0"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0">
- <inkscape:grid
- type="xygrid"
- id="grid833"
- originx="16.375008"
- originy="11.083327" />
- </sodipodi:namedview>
- <metadata
- id="metadata5">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(16.375001,11.083332)">
- <rect
- style="fill:#e6e6e6;stroke:#6c5d53;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="rect857"
- width="127"
- height="39.687492"
- x="-15.875001"
- y="-10.583332"
- rx="1.5875" />
- <g
- id="g884"
- transform="matrix(0.5,0,0,0.5,-12.40625,-7.1145834)"
- style="stroke-width:2">
- <path
- sodipodi:type="star"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264584;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="path899"
- sodipodi:sides="4"
- sodipodi:cx="12.700001"
- sodipodi:cy="12.700001"
- sodipodi:r1="14.81729"
- sodipodi:r2="10.477405"
- sodipodi:arg1="0.78539816"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="true"
- inkscape:rounded="0.2"
- inkscape:randomized="0"
- d="m 23.177407,23.177407 c -2.963458,2.963458 -17.9913546,2.963458 -20.9548127,0 -2.96345803,-2.963458 -2.96345808,-17.9913546 0,-20.9548127 2.963458,-2.96345803 17.9913547,-2.96345808 20.9548127,0 2.963458,2.963458 2.963458,17.9913547 0,20.9548127 z" />
- <g
- id="g871"
- style="stroke-width:2">
- <g
- aria-label="#!rsc"
- id="text837">
- <path
- d="M 7.483197,16.645533 V 15.621671 H 6.9371377 l 0.165768,-1.277388 H 5.8255169 l -0.165768,1.277388 h -0.975106 l 0.165768,-1.277388 H 3.5730221 l -0.165768,1.277388 H 2.7051778 v 1.023862 H 3.2707393 L 3.0269628,18.517736 H 2.3443886 v 1.023861 H 2.890448 L 2.7051778,20.935999 H 3.9825666 L 4.1678368,19.541597 H 5.1429427 L 4.9576726,20.935999 H 6.2350614 L 6.4203315,19.541597 H 7.1224078 V 18.517736 H 6.5568464 l 0.2437764,-1.872203 z m -2.2037394,1.872203 h -0.975106 l 0.2437765,-1.872203 h 0.975106 z"
- style="stroke-width:0.529163px"
- id="path851" />
- <path
- d="m 9.6186715,14.178515 h -1.638178 l 0.1950212,4.270964 h 1.2481356 z m -0.819089,5.15831 c -0.487553,0 -0.8775954,0.399794 -0.8775954,0.877596 0,0.487552 0.3900424,0.887346 0.8775954,0.887346 0.497304,0 0.8873464,-0.399794 0.8873464,-0.887346 0,-0.477802 -0.3900424,-0.877596 -0.8873464,-0.877596 z"
- style="stroke-width:0.529163px"
- id="path853" />
- <path
- d="m 13.372827,15.61192 c -0.594815,0 -1.10187,0.429047 -1.335895,1.150625 l -0.136515,-1.004359 h -1.335895 v 5.177813 h 1.540667 v -2.603533 c 0.175519,-0.770334 0.438798,-1.228633 1.072617,-1.228633 0.165768,0 0.302283,0.02925 0.468051,0.06826 l 0.243776,-1.491912 c -0.175519,-0.04875 -0.321785,-0.06826 -0.516806,-0.06826 z"
- style="stroke-width:0.529163px"
- id="path855" />
- <path
- d="m 16.181119,15.592418 c -1.306642,0 -2.11598,0.692326 -2.11598,1.579672 0,0.799587 0.507055,1.326144 1.530916,1.618676 0.936102,0.263278 1.092119,0.37054 1.092119,0.721578 0,0.312034 -0.282781,0.487553 -0.750832,0.487553 -0.507055,0 -0.984857,-0.204772 -1.374899,-0.507055 l -0.750832,0.838591 c 0.507055,0.4583 1.267638,0.770334 2.164736,0.770334 1.287139,0 2.30125,-0.633819 2.30125,-1.706435 0,-0.926351 -0.575313,-1.355398 -1.599174,-1.64793 -0.926351,-0.273029 -1.062866,-0.390042 -1.062866,-0.663072 0,-0.234025 0.204773,-0.390042 0.624068,-0.390042 0.448549,0 0.877595,0.146266 1.277389,0.399793 l 0.565561,-0.867844 C 17.604773,15.836195 16.93195,15.592418 16.181119,15.592418 Z"
- style="stroke-width:0.529163px"
- id="path857" />
- <path
- d="m 21.280919,15.592418 c -1.550418,0 -2.535275,1.150625 -2.535275,2.798554 0,1.638178 0.975106,2.710795 2.564528,2.710795 0.711828,0 1.267638,-0.234026 1.74544,-0.614317 l -0.672823,-0.955604 c -0.37054,0.234026 -0.624068,0.351038 -0.994608,0.351038 -0.614317,0 -1.023861,-0.351038 -1.023861,-1.501663 0,-1.160376 0.380291,-1.608925 1.043363,-1.608925 0.351038,0 0.653321,0.117013 0.984857,0.370541 l 0.663072,-0.9166 c -0.497304,-0.419295 -1.053114,-0.633819 -1.774693,-0.633819 z"
- style="stroke-width:0.529163px"
- id="path859" />
- </g>
- <g
- id="g1542"
- transform="matrix(2,0,0,2,-0.41134438,3.175)"
- style="stroke-width:1">
- <path
- d="M 4.9596016,-1.0195918 C 5.3675734,1.8116029 6.8867822,3.5302649 9.983482,3.6714361 7.0655129,4.7878541 4.0581782,2.1638833 4.9596016,-1.0195918"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path943" />
- <path
- d="m 3.3406657,-0.52095963 c 0.034969,-0.00777 0.038854,0.015542 0.041445,0.041445 C 3.4805417,1.3259222 4.2420891,2.6948942 5.2510098,3.6312866 6.2599306,4.5676787 7.6146558,5.3253406 9.525,5.2916667 5.9477993,6.7163303 2.1879835,3.2932527 3.3393705,-0.52095963"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path945" />
- </g>
- </g>
- </g>
- <text
- xml:space="preserve"
- transform="matrix(0.26458333,0,0,0.26458333,-45.013502,-6.6039365)"
- id="text4811"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:15px;font-family:'Fira Mono', 'Roboto Mono', monospace;-inkscape-font-specification:'Fira Mono, Roboto Mono, monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;white-space:pre;shape-inside:url(#rect4813);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="-248.88142"
- y="0"><tspan
- x="180"
- y="10.85"
- id="tspan13600">[MikroTik] ✨ LTE firmware upgrade
-</tspan><tspan
- x="180"
- y="25.85"
- id="tspan13602">
-</tspan><tspan
- x="180"
- y="40.85"
- id="tspan13604">A new firmware version R11e-LTE6_V027 is available
-</tspan><tspan
- x="180"
- y="55.85"
- id="tspan13606">for LTE interface lte on MikroTik.
-</tspan><tspan
- x="180"
- y="70.85"
- id="tspan13608">
-</tspan><tspan
- x="180"
- y="85.85"
- id="tspan13610">Interface: MikroTik R11e-LTE6
-</tspan><tspan
- x="180"
- y="100.85"
- id="tspan13612">Installed: R11e-LTE6_V025
-</tspan><tspan
- x="180"
- y="115.85"
- id="tspan13614">Available: R11e-LTE6_V027</tspan></text>
- </g>
-</svg>
diff --git a/doc/check-lte-firmware-upgrade.md b/doc/check-lte-firmware-upgrade.md
index 6550734..59a62c7 100644
--- a/doc/check-lte-firmware-upgrade.md
+++ b/doc/check-lte-firmware-upgrade.md
@@ -1,7 +1,14 @@
Notify on LTE firmware upgrade
==============================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -19,7 +26,7 @@ upgrades. Currently supported LTE hardware:
### Sample notification
-![check-lte-firmware-upgrade notification](check-lte-firmware-upgrade.d/notification.svg)
+![check-lte-firmware-upgrade notification](check-lte-firmware-upgrade.d/notification.avif)
Requirements and installation
-----------------------------
@@ -35,7 +42,8 @@ Just install the script:
Configuration
-------------
-Notification setting are required for e-mail,
+Also notification settings are required for
+[e-mail](mod/notification-email.md),
[matrix](mod/notification-matrix.md) and/or
[telegram](mod/notification-telegram.md).
@@ -46,5 +54,5 @@ See also
* [Install LTE firmware upgrade](unattended-lte-firmware-upgrade.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/check-routeros-update.d/notification.avif b/doc/check-routeros-update.d/notification.avif
new file mode 100644
index 0000000..50317cf
--- /dev/null
+++ b/doc/check-routeros-update.d/notification.avif
Binary files differ
diff --git a/doc/check-routeros-update.d/notification.svg b/doc/check-routeros-update.d/notification.svg
deleted file mode 100644
index 8a5cc67..0000000
--- a/doc/check-routeros-update.d/notification.svg
+++ /dev/null
@@ -1,230 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- width="523.77954"
- height="253.77951"
- viewBox="0 0 138.58334 67.145814"
- version="1.1"
- id="svg8"
- inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
- sodipodi:docname="check-routeros-update.svg"
- inkscape:export-filename="logo.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <defs
- id="defs2">
- <rect
- x="291.8898"
- y="1031.8898"
- width="80"
- height="30"
- id="rect51085" />
- <rect
- x="61.889786"
- y="251.88976"
- width="540"
- height="40.000004"
- id="rect6582" />
- <rect
- x="180"
- y="0"
- width="658.20044"
- height="397.81946"
- id="rect4813" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.52"
- inkscape:cx="174.67105"
- inkscape:cy="218.42105"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- inkscape:document-rotation="0"
- showgrid="true"
- units="px"
- inkscape:window-width="1920"
- inkscape:window-height="1047"
- inkscape:window-x="0"
- inkscape:window-y="33"
- inkscape:window-maximized="1"
- inkscape:pagecheckerboard="0"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0">
- <inkscape:grid
- type="xygrid"
- id="grid833"
- originx="16.375008"
- originy="11.083326" />
- </sodipodi:namedview>
- <metadata
- id="metadata5">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(16.375,11.083333)">
- <rect
- style="fill:#e6e6e6;stroke:#6c5d53;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="rect857"
- width="137.58333"
- height="66.145821"
- x="-15.875"
- y="-10.583333"
- rx="1.7197918" />
- <g
- id="g884"
- transform="matrix(0.5,0,0,0.5,-12.40625,-7.1145834)"
- style="stroke-width:2">
- <path
- sodipodi:type="star"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264584;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="path899"
- sodipodi:sides="4"
- sodipodi:cx="12.700001"
- sodipodi:cy="12.700001"
- sodipodi:r1="14.81729"
- sodipodi:r2="10.477405"
- sodipodi:arg1="0.78539816"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="true"
- inkscape:rounded="0.2"
- inkscape:randomized="0"
- d="m 23.177407,23.177407 c -2.963458,2.963458 -17.9913546,2.963458 -20.9548127,0 -2.96345803,-2.963458 -2.96345808,-17.9913546 0,-20.9548127 2.963458,-2.96345803 17.9913547,-2.96345808 20.9548127,0 2.963458,2.963458 2.963458,17.9913547 0,20.9548127 z" />
- <g
- id="g871"
- style="stroke-width:2">
- <g
- aria-label="#!rsc"
- id="text837">
- <path
- d="M 7.483197,16.645533 V 15.621671 H 6.9371377 l 0.165768,-1.277388 H 5.8255169 l -0.165768,1.277388 h -0.975106 l 0.165768,-1.277388 H 3.5730221 l -0.165768,1.277388 H 2.7051778 v 1.023862 H 3.2707393 L 3.0269628,18.517736 H 2.3443886 v 1.023861 H 2.890448 L 2.7051778,20.935999 H 3.9825666 L 4.1678368,19.541597 H 5.1429427 L 4.9576726,20.935999 H 6.2350614 L 6.4203315,19.541597 H 7.1224078 V 18.517736 H 6.5568464 l 0.2437764,-1.872203 z m -2.2037394,1.872203 h -0.975106 l 0.2437765,-1.872203 h 0.975106 z"
- style="stroke-width:0.529163px"
- id="path851" />
- <path
- d="m 9.6186715,14.178515 h -1.638178 l 0.1950212,4.270964 h 1.2481356 z m -0.819089,5.15831 c -0.487553,0 -0.8775954,0.399794 -0.8775954,0.877596 0,0.487552 0.3900424,0.887346 0.8775954,0.887346 0.497304,0 0.8873464,-0.399794 0.8873464,-0.887346 0,-0.477802 -0.3900424,-0.877596 -0.8873464,-0.877596 z"
- style="stroke-width:0.529163px"
- id="path853" />
- <path
- d="m 13.372827,15.61192 c -0.594815,0 -1.10187,0.429047 -1.335895,1.150625 l -0.136515,-1.004359 h -1.335895 v 5.177813 h 1.540667 v -2.603533 c 0.175519,-0.770334 0.438798,-1.228633 1.072617,-1.228633 0.165768,0 0.302283,0.02925 0.468051,0.06826 l 0.243776,-1.491912 c -0.175519,-0.04875 -0.321785,-0.06826 -0.516806,-0.06826 z"
- style="stroke-width:0.529163px"
- id="path855" />
- <path
- d="m 16.181119,15.592418 c -1.306642,0 -2.11598,0.692326 -2.11598,1.579672 0,0.799587 0.507055,1.326144 1.530916,1.618676 0.936102,0.263278 1.092119,0.37054 1.092119,0.721578 0,0.312034 -0.282781,0.487553 -0.750832,0.487553 -0.507055,0 -0.984857,-0.204772 -1.374899,-0.507055 l -0.750832,0.838591 c 0.507055,0.4583 1.267638,0.770334 2.164736,0.770334 1.287139,0 2.30125,-0.633819 2.30125,-1.706435 0,-0.926351 -0.575313,-1.355398 -1.599174,-1.64793 -0.926351,-0.273029 -1.062866,-0.390042 -1.062866,-0.663072 0,-0.234025 0.204773,-0.390042 0.624068,-0.390042 0.448549,0 0.877595,0.146266 1.277389,0.399793 l 0.565561,-0.867844 C 17.604773,15.836195 16.93195,15.592418 16.181119,15.592418 Z"
- style="stroke-width:0.529163px"
- id="path857" />
- <path
- d="m 21.280919,15.592418 c -1.550418,0 -2.535275,1.150625 -2.535275,2.798554 0,1.638178 0.975106,2.710795 2.564528,2.710795 0.711828,0 1.267638,-0.234026 1.74544,-0.614317 l -0.672823,-0.955604 c -0.37054,0.234026 -0.624068,0.351038 -0.994608,0.351038 -0.614317,0 -1.023861,-0.351038 -1.023861,-1.501663 0,-1.160376 0.380291,-1.608925 1.043363,-1.608925 0.351038,0 0.653321,0.117013 0.984857,0.370541 l 0.663072,-0.9166 c -0.497304,-0.419295 -1.053114,-0.633819 -1.774693,-0.633819 z"
- style="stroke-width:0.529163px"
- id="path859" />
- </g>
- <g
- id="g1542"
- transform="matrix(2,0,0,2,-0.41134438,3.175)"
- style="stroke-width:1">
- <path
- d="M 4.9596016,-1.0195918 C 5.3675734,1.8116029 6.8867822,3.5302649 9.983482,3.6714361 7.0655129,4.7878541 4.0581782,2.1638833 4.9596016,-1.0195918"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path943" />
- <path
- d="m 3.3406657,-0.52095963 c 0.034969,-0.00777 0.038854,0.015542 0.041445,0.041445 C 3.4805417,1.3259222 4.2420891,2.6948942 5.2510098,3.6312866 6.2599306,4.5676787 7.6146558,5.3253406 9.525,5.2916667 5.9477993,6.7163303 2.1879835,3.2932527 3.3393705,-0.52095963"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path945" />
- </g>
- </g>
- </g>
- <text
- xml:space="preserve"
- transform="matrix(0.26458333,0,0,0.26458333,-44.950001,-6.6039376)"
- id="text4811"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:15px;font-family:'Fira Mono', 'Roboto Mono', monospace;-inkscape-font-specification:'Fira Mono, Roboto Mono, monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;white-space:pre;shape-inside:url(#rect4813);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="-248.88142"
- y="0"><tspan
- x="180"
- y="10.85"
- id="tspan13541">[MikroTik] ✨ RouterOS update
-</tspan><tspan
- x="180"
- y="25.85"
- id="tspan13543">
-</tspan><tspan
- x="180"
- y="40.85"
- id="tspan13545">A new RouterOS version 7.1.3 is available for MikroTik.
-</tspan><tspan
- x="180"
- y="55.85"
- id="tspan13547">
-</tspan><tspan
- x="180"
- y="70.85"
- id="tspan13549">Hostname: MikroTik
-</tspan><tspan
- x="180"
- y="85.85"
- id="tspan13551">Board name: CHR
-</tspan><tspan
- x="180"
- y="100.85"
- id="tspan13553">Architecture: x86_64
-</tspan><tspan
- x="180"
- y="115.85"
- id="tspan13555">RouterOS:
-</tspan><tspan
- x="180"
- y="130.85"
- id="tspan13557"> Channel: stable
-</tspan><tspan
- x="180"
- y="145.85"
- id="tspan13559"> Installed: 7.1.2
-</tspan><tspan
- x="180"
- y="160.85"
- id="tspan13561"> Available: 7.1.3
-</tspan><tspan
- x="180"
- y="175.85"
- id="tspan13563">RouterOS-Scripts:
-</tspan><tspan
- x="180"
- y="190.85"
- id="tspan13565"> Current: 78</tspan></text>
- <text
- xml:space="preserve"
- id="text6580"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.175px;line-height:3.96875px;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;white-space:pre;shape-inside:url(#rect6582);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="0"
- y="0"
- transform="translate(-59.247377,-209.40811)"><tspan
- x="61.890625"
- y="254.76135"
- id="tspan13567">
-</tspan><tspan
- x="61.890625"
- y="258.7301"
- id="tspan13569">🔗 https://mikrotik.com/download/changelogs/stable-release-tree</tspan></text>
- </g>
-</svg>
diff --git a/doc/check-routeros-update.md b/doc/check-routeros-update.md
index f43cec9..f9d485c 100644
--- a/doc/check-routeros-update.md
+++ b/doc/check-routeros-update.md
@@ -1,7 +1,14 @@
Notify on RouterOS update
=========================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -30,7 +37,7 @@ automatically is supported.
### Sample notification
-![check-routeros-update notification](check-routeros-update.d/notification.svg)
+![check-routeros-update notification](check-routeros-update.d/notification.avif)
Requirements and installation
-----------------------------
@@ -46,18 +53,28 @@ And add a scheduler for automatic update notification:
Configuration
-------------
-Configuration is required only if you want to control update process with
-safe versions from a web server. The configuration goes to
-`global-config-overlay`, this is the parameter:
-
-* `SafeUpdateNeighbor`: install updates automatically if seen in neighbor list
-* `SafeUpdateOnCap`: check for updates even if device is managed by CAPsMAN
-* `SafeUpdatePatch`: install patch updates automatically
-* `SafeUpdateUrl`: url to check for safe update, the channel (`long-term`,
-`stable` or `testing`) is appended
-
-Also notification settings are required for e-mail,
-[matrix](mod/notification-matrix.md) and/or
+No extra configuration is required to receive notifications. Several
+mechanisms are availalbe to enable automatic installation of updates.
+The configuration goes to `global-config-overlay`, these are the parameters:
+
+* `SafeUpdateNeighbor`: install updates automatically if at least one other
+ device is seen in neighbor list with new version
+* `SafeUpdateNeighborIdentity`: regular expression to match identity for
+ trusted devices, leave empty to match all
+* `SafeUpdatePatch`: install patch updates (where just last digit changes)
+ automatically
+* `SafeUpdateUrl`: url on webserver to check for safe update, the channel
+ (`long-term`, `stable` or `testing`) is appended
+* `SafeUpdateAll`: install **all** updates automatically
+
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
+
+Also notification settings are required for
+[e-mail](mod/notification-email.md),
+[matrix](mod/notification-matrix.md),
+[ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md).
Usage and invocation
@@ -71,6 +88,14 @@ If an update is found you can install it right away.
Installing script [packages-update](packages-update.md) gives extra options.
+Tips & Tricks
+-------------
+
+The script checks for full connectivity before acting, so scheduling at
+startup is perfectly valid:
+
+ /system/scheduler/add name=check-routeros-update@startup on-event="/system/script/run check-routeros-update;" start-time=startup;
+
See also
--------
@@ -78,5 +103,5 @@ See also
* [Manage system update](packages-update.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/collect-wireless-mac.d/notification.avif b/doc/collect-wireless-mac.d/notification.avif
new file mode 100644
index 0000000..a2833f0
--- /dev/null
+++ b/doc/collect-wireless-mac.d/notification.avif
Binary files differ
diff --git a/doc/collect-wireless-mac.d/notification.svg b/doc/collect-wireless-mac.d/notification.svg
deleted file mode 100644
index fe1d20f..0000000
--- a/doc/collect-wireless-mac.d/notification.svg
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- width="493.77954"
- height="243.77951"
- viewBox="0 0 130.64584 64.499982"
- version="1.1"
- id="svg8"
- inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
- sodipodi:docname="collect-wireless-mac.svg"
- inkscape:export-filename="logo.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <defs
- id="defs2">
- <rect
- x="180"
- y="0"
- width="658.20044"
- height="397.81946"
- id="rect4813" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.52"
- inkscape:cx="113.48684"
- inkscape:cy="90.789474"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- inkscape:document-rotation="0"
- showgrid="true"
- units="px"
- inkscape:window-width="1920"
- inkscape:window-height="1047"
- inkscape:window-x="0"
- inkscape:window-y="33"
- inkscape:window-maximized="1"
- inkscape:pagecheckerboard="0"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0">
- <inkscape:grid
- type="xygrid"
- id="grid833"
- originx="16.375008"
- originy="11.083328" />
- </sodipodi:namedview>
- <metadata
- id="metadata5">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(16.375001,11.083333)">
- <rect
- style="fill:#e6e6e6;stroke:#6c5d53;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="rect857"
- width="129.64583"
- height="63.499989"
- x="-15.875001"
- y="-10.583333"
- rx="1.6205727" />
- <g
- id="g884"
- transform="matrix(0.5,0,0,0.5,-12.40625,-7.1145834)"
- style="stroke-width:2">
- <path
- sodipodi:type="star"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264584;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="path899"
- sodipodi:sides="4"
- sodipodi:cx="12.700001"
- sodipodi:cy="12.700001"
- sodipodi:r1="14.81729"
- sodipodi:r2="10.477405"
- sodipodi:arg1="0.78539816"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="true"
- inkscape:rounded="0.2"
- inkscape:randomized="0"
- d="m 23.177407,23.177407 c -2.963458,2.963458 -17.9913546,2.963458 -20.9548127,0 -2.96345803,-2.963458 -2.96345808,-17.9913546 0,-20.9548127 2.963458,-2.96345803 17.9913547,-2.96345808 20.9548127,0 2.963458,2.963458 2.963458,17.9913547 0,20.9548127 z" />
- <g
- id="g871"
- style="stroke-width:2">
- <g
- aria-label="#!rsc"
- id="text837">
- <path
- d="M 7.483197,16.645533 V 15.621671 H 6.9371377 l 0.165768,-1.277388 H 5.8255169 l -0.165768,1.277388 h -0.975106 l 0.165768,-1.277388 H 3.5730221 l -0.165768,1.277388 H 2.7051778 v 1.023862 H 3.2707393 L 3.0269628,18.517736 H 2.3443886 v 1.023861 H 2.890448 L 2.7051778,20.935999 H 3.9825666 L 4.1678368,19.541597 H 5.1429427 L 4.9576726,20.935999 H 6.2350614 L 6.4203315,19.541597 H 7.1224078 V 18.517736 H 6.5568464 l 0.2437764,-1.872203 z m -2.2037394,1.872203 h -0.975106 l 0.2437765,-1.872203 h 0.975106 z"
- style="stroke-width:0.529163px"
- id="path851" />
- <path
- d="m 9.6186715,14.178515 h -1.638178 l 0.1950212,4.270964 h 1.2481356 z m -0.819089,5.15831 c -0.487553,0 -0.8775954,0.399794 -0.8775954,0.877596 0,0.487552 0.3900424,0.887346 0.8775954,0.887346 0.497304,0 0.8873464,-0.399794 0.8873464,-0.887346 0,-0.477802 -0.3900424,-0.877596 -0.8873464,-0.877596 z"
- style="stroke-width:0.529163px"
- id="path853" />
- <path
- d="m 13.372827,15.61192 c -0.594815,0 -1.10187,0.429047 -1.335895,1.150625 l -0.136515,-1.004359 h -1.335895 v 5.177813 h 1.540667 v -2.603533 c 0.175519,-0.770334 0.438798,-1.228633 1.072617,-1.228633 0.165768,0 0.302283,0.02925 0.468051,0.06826 l 0.243776,-1.491912 c -0.175519,-0.04875 -0.321785,-0.06826 -0.516806,-0.06826 z"
- style="stroke-width:0.529163px"
- id="path855" />
- <path
- d="m 16.181119,15.592418 c -1.306642,0 -2.11598,0.692326 -2.11598,1.579672 0,0.799587 0.507055,1.326144 1.530916,1.618676 0.936102,0.263278 1.092119,0.37054 1.092119,0.721578 0,0.312034 -0.282781,0.487553 -0.750832,0.487553 -0.507055,0 -0.984857,-0.204772 -1.374899,-0.507055 l -0.750832,0.838591 c 0.507055,0.4583 1.267638,0.770334 2.164736,0.770334 1.287139,0 2.30125,-0.633819 2.30125,-1.706435 0,-0.926351 -0.575313,-1.355398 -1.599174,-1.64793 -0.926351,-0.273029 -1.062866,-0.390042 -1.062866,-0.663072 0,-0.234025 0.204773,-0.390042 0.624068,-0.390042 0.448549,0 0.877595,0.146266 1.277389,0.399793 l 0.565561,-0.867844 C 17.604773,15.836195 16.93195,15.592418 16.181119,15.592418 Z"
- style="stroke-width:0.529163px"
- id="path857" />
- <path
- d="m 21.280919,15.592418 c -1.550418,0 -2.535275,1.150625 -2.535275,2.798554 0,1.638178 0.975106,2.710795 2.564528,2.710795 0.711828,0 1.267638,-0.234026 1.74544,-0.614317 l -0.672823,-0.955604 c -0.37054,0.234026 -0.624068,0.351038 -0.994608,0.351038 -0.614317,0 -1.023861,-0.351038 -1.023861,-1.501663 0,-1.160376 0.380291,-1.608925 1.043363,-1.608925 0.351038,0 0.653321,0.117013 0.984857,0.370541 l 0.663072,-0.9166 c -0.497304,-0.419295 -1.053114,-0.633819 -1.774693,-0.633819 z"
- style="stroke-width:0.529163px"
- id="path859" />
- </g>
- <g
- id="g1542"
- transform="matrix(2,0,0,2,-0.41134438,3.175)"
- style="stroke-width:1">
- <path
- d="M 4.9596016,-1.0195918 C 5.3675734,1.8116029 6.8867822,3.5302649 9.983482,3.6714361 7.0655129,4.7878541 4.0581782,2.1638833 4.9596016,-1.0195918"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path943" />
- <path
- d="m 3.3406657,-0.52095963 c 0.034969,-0.00777 0.038854,0.015542 0.041445,0.041445 C 3.4805417,1.3259222 4.2420891,2.6948942 5.2510098,3.6312866 6.2599306,4.5676787 7.6146558,5.3253406 9.525,5.2916667 5.9477993,6.7163303 2.1879835,3.2932527 3.3393705,-0.52095963"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path945" />
- </g>
- </g>
- </g>
- <text
- xml:space="preserve"
- transform="matrix(0.26458333,0,0,0.26458333,-45.013502,-6.6039376)"
- id="text4811"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:15px;font-family:'Fira Mono', 'Roboto Mono', monospace;-inkscape-font-specification:'Fira Mono, Roboto Mono, monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;white-space:pre;shape-inside:url(#rect4813);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="-248.88142"
- y="0"><tspan
- x="180"
- y="10.85"
- id="tspan13404">[MikroTik] 📱 48:F1:7F:D0:E5:4E connected to Wifi
-</tspan><tspan
- x="180"
- y="25.85"
- id="tspan13406">
-</tspan><tspan
- x="180"
- y="40.85"
- id="tspan13408">A device with unknown MAC address connected to Wifi
-</tspan><tspan
- x="180"
- y="55.85"
- id="tspan13410">on MikroTik.
-</tspan><tspan
- x="180"
- y="70.85"
- id="tspan13412">
-</tspan><tspan
- x="180"
- y="85.85"
- id="tspan13414">Controller: MikroTik
-</tspan><tspan
- x="180"
- y="100.85"
- id="tspan13416">Interface: wl5-wifi
-</tspan><tspan
- x="180"
- y="115.85"
- id="tspan13418">SSID: Wifi
-</tspan><tspan
- x="180"
- y="130.85"
- id="tspan13420">MAC: 48:F1:7F:D0:E5:4E
-</tspan><tspan
- x="180"
- y="145.85"
- id="tspan13422">Vendor: Intel Corporate
-</tspan><tspan
- x="180"
- y="160.85"
- id="tspan13424">Hostname: host-523c8e0e
-</tspan><tspan
- x="180"
- y="175.85"
- id="tspan13426">Address: 192.168.20.254
-</tspan><tspan
- x="180"
- y="190.85"
- id="tspan13428">DNS name: host-523c8e0e.dhcp.MikroTik.example.com
-</tspan><tspan
- x="180"
- y="205.85"
- id="tspan13430">Date: jun/15/2021 09:21:56</tspan></text>
- </g>
-</svg>
diff --git a/doc/collect-wireless-mac.md b/doc/collect-wireless-mac.md
index afdf73a..57032d8 100644
--- a/doc/collect-wireless-mac.md
+++ b/doc/collect-wireless-mac.md
@@ -1,7 +1,14 @@
Collect MAC addresses in wireless access list
=============================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -17,19 +24,24 @@ and modify it to your needs.
### Sample notification
-![collect-wireless-mac notification](collect-wireless-mac.d/notification.svg)
+![collect-wireless-mac notification](collect-wireless-mac.d/notification.avif)
Requirements and installation
-----------------------------
-Depending on whether you use CAPsMAN (`/caps-man`) or local wireless
-interface (`/interface/wireless`) you need to install a different script.
+Depending on whether you use `wifi` package (`/interface/wifi`), legacy
+wifi with CAPsMAN (`/caps-man`) or local wireless interface
+(`/interface/wireless`) you need to install a different script.
+
+For `wifi`:
+
+ $ScriptInstallUpdate collect-wireless-mac.wifi;
-For CAPsMAN:
+For legacy CAPsMAN:
$ScriptInstallUpdate collect-wireless-mac.capsman;
-For local interface:
+For legacy local interface:
$ScriptInstallUpdate collect-wireless-mac.local;
@@ -40,8 +52,10 @@ On first run a disabled access list entry acting as marker (with comment
"`--- collected above ---`") is added. Move this entry to define where new
entries are to be added.
-Also notification settings are required for e-mail,
-[matrix](mod/notification-matrix.md) and/or
+Also notification settings are required for
+[e-mail](mod/notification-email.md),
+[matrix](mod/notification-matrix.md),
+[ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md).
Usage and invocation
@@ -59,5 +73,5 @@ See also
* [Run other scripts on DHCP lease](lease-script.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/daily-psk.d/notification.avif b/doc/daily-psk.d/notification.avif
new file mode 100644
index 0000000..dd0b1b6
--- /dev/null
+++ b/doc/daily-psk.d/notification.avif
Binary files differ
diff --git a/doc/daily-psk.d/notification.svg b/doc/daily-psk.d/notification.svg
deleted file mode 100644
index 6c7d13a..0000000
--- a/doc/daily-psk.d/notification.svg
+++ /dev/null
@@ -1,204 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- width="443.77957"
- height="213.77948"
- viewBox="0 0 117.41669 56.562475"
- version="1.1"
- id="svg8"
- inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
- sodipodi:docname="daily-psk.svg"
- inkscape:export-filename="logo.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <defs
- id="defs2">
- <rect
- x="180"
- y="0"
- width="658.20044"
- height="397.81946"
- id="rect4813" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.5"
- inkscape:cx="70.333333"
- inkscape:cy="143.33333"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- inkscape:document-rotation="0"
- showgrid="true"
- units="px"
- inkscape:window-width="1920"
- inkscape:window-height="1047"
- inkscape:window-x="0"
- inkscape:window-y="33"
- inkscape:window-maximized="1"
- inkscape:pagecheckerboard="0"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0">
- <inkscape:grid
- type="xygrid"
- id="grid833"
- originx="16.375011"
- originy="11.083318" />
- </sodipodi:namedview>
- <metadata
- id="metadata5">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(16.374997,11.08333)">
- <rect
- style="fill:#e6e6e6;stroke:#6c5d53;stroke-width:0.999995;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="rect857"
- width="116.41667"
- height="55.562489"
- x="-15.875"
- y="-10.583332"
- rx="1.4552084" />
- <g
- id="g884"
- transform="matrix(0.5,0,0,0.5,-12.40625,-7.1145834)"
- style="stroke-width:2">
- <path
- sodipodi:type="star"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264584;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="path899"
- sodipodi:sides="4"
- sodipodi:cx="12.700001"
- sodipodi:cy="12.700001"
- sodipodi:r1="14.81729"
- sodipodi:r2="10.477405"
- sodipodi:arg1="0.78539816"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="true"
- inkscape:rounded="0.2"
- inkscape:randomized="0"
- d="m 23.177407,23.177407 c -2.963458,2.963458 -17.9913546,2.963458 -20.9548127,0 -2.96345803,-2.963458 -2.96345808,-17.9913546 0,-20.9548127 2.963458,-2.96345803 17.9913547,-2.96345808 20.9548127,0 2.963458,2.963458 2.963458,17.9913547 0,20.9548127 z" />
- <g
- id="g871"
- style="stroke-width:2">
- <g
- aria-label="#!rsc"
- id="text837">
- <path
- d="M 7.483197,16.645533 V 15.621671 H 6.9371377 l 0.165768,-1.277388 H 5.8255169 l -0.165768,1.277388 h -0.975106 l 0.165768,-1.277388 H 3.5730221 l -0.165768,1.277388 H 2.7051778 v 1.023862 H 3.2707393 L 3.0269628,18.517736 H 2.3443886 v 1.023861 H 2.890448 L 2.7051778,20.935999 H 3.9825666 L 4.1678368,19.541597 H 5.1429427 L 4.9576726,20.935999 H 6.2350614 L 6.4203315,19.541597 H 7.1224078 V 18.517736 H 6.5568464 l 0.2437764,-1.872203 z m -2.2037394,1.872203 h -0.975106 l 0.2437765,-1.872203 h 0.975106 z"
- style="stroke-width:0.529163px"
- id="path851" />
- <path
- d="m 9.6186715,14.178515 h -1.638178 l 0.1950212,4.270964 h 1.2481356 z m -0.819089,5.15831 c -0.487553,0 -0.8775954,0.399794 -0.8775954,0.877596 0,0.487552 0.3900424,0.887346 0.8775954,0.887346 0.497304,0 0.8873464,-0.399794 0.8873464,-0.887346 0,-0.477802 -0.3900424,-0.877596 -0.8873464,-0.877596 z"
- style="stroke-width:0.529163px"
- id="path853" />
- <path
- d="m 13.372827,15.61192 c -0.594815,0 -1.10187,0.429047 -1.335895,1.150625 l -0.136515,-1.004359 h -1.335895 v 5.177813 h 1.540667 v -2.603533 c 0.175519,-0.770334 0.438798,-1.228633 1.072617,-1.228633 0.165768,0 0.302283,0.02925 0.468051,0.06826 l 0.243776,-1.491912 c -0.175519,-0.04875 -0.321785,-0.06826 -0.516806,-0.06826 z"
- style="stroke-width:0.529163px"
- id="path855" />
- <path
- d="m 16.181119,15.592418 c -1.306642,0 -2.11598,0.692326 -2.11598,1.579672 0,0.799587 0.507055,1.326144 1.530916,1.618676 0.936102,0.263278 1.092119,0.37054 1.092119,0.721578 0,0.312034 -0.282781,0.487553 -0.750832,0.487553 -0.507055,0 -0.984857,-0.204772 -1.374899,-0.507055 l -0.750832,0.838591 c 0.507055,0.4583 1.267638,0.770334 2.164736,0.770334 1.287139,0 2.30125,-0.633819 2.30125,-1.706435 0,-0.926351 -0.575313,-1.355398 -1.599174,-1.64793 -0.926351,-0.273029 -1.062866,-0.390042 -1.062866,-0.663072 0,-0.234025 0.204773,-0.390042 0.624068,-0.390042 0.448549,0 0.877595,0.146266 1.277389,0.399793 l 0.565561,-0.867844 C 17.604773,15.836195 16.93195,15.592418 16.181119,15.592418 Z"
- style="stroke-width:0.529163px"
- id="path857" />
- <path
- d="m 21.280919,15.592418 c -1.550418,0 -2.535275,1.150625 -2.535275,2.798554 0,1.638178 0.975106,2.710795 2.564528,2.710795 0.711828,0 1.267638,-0.234026 1.74544,-0.614317 l -0.672823,-0.955604 c -0.37054,0.234026 -0.624068,0.351038 -0.994608,0.351038 -0.614317,0 -1.023861,-0.351038 -1.023861,-1.501663 0,-1.160376 0.380291,-1.608925 1.043363,-1.608925 0.351038,0 0.653321,0.117013 0.984857,0.370541 l 0.663072,-0.9166 c -0.497304,-0.419295 -1.053114,-0.633819 -1.774693,-0.633819 z"
- style="stroke-width:0.529163px"
- id="path859" />
- </g>
- <g
- id="g1542"
- transform="matrix(2,0,0,2,-0.41134438,3.175)"
- style="stroke-width:1">
- <path
- d="M 4.9596016,-1.0195918 C 5.3675734,1.8116029 6.8867822,3.5302649 9.983482,3.6714361 7.0655129,4.7878541 4.0581782,2.1638833 4.9596016,-1.0195918"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path943" />
- <path
- d="m 3.3406657,-0.52095963 c 0.034969,-0.00777 0.038854,0.015542 0.041445,0.041445 C 3.4805417,1.3259222 4.2420891,2.6948942 5.2510098,3.6312866 6.2599306,4.5676787 7.6146558,5.3253406 9.525,5.2916667 5.9477993,6.7163303 2.1879835,3.2932527 3.3393705,-0.52095963"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path945" />
- </g>
- </g>
- </g>
- <text
- xml:space="preserve"
- transform="matrix(0.26458333,0,0,0.26458333,-45.0135,-6.6039355)"
- id="text4811"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:15px;font-family:'Fira Mono', 'Roboto Mono', monospace;-inkscape-font-specification:'Fira Mono, Roboto Mono, monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;white-space:pre;shape-inside:url(#rect4813);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="-248.88142"
- y="0"><tspan
- x="180"
- y="10.85"
- id="tspan13351">[MikroTik] 📅 daily PSK Guest-Wifi
-</tspan><tspan
- x="180"
- y="25.85"
- id="tspan13353">
-</tspan><tspan
- x="180"
- y="40.85"
- id="tspan13355">This is the daily PSK on MikroTik:
-</tspan><tspan
- x="180"
- y="55.85"
- id="tspan13357">
-</tspan><tspan
- x="180"
- y="70.85"
- id="tspan13359">SSID: Guest-Wifi
-</tspan><tspan
- x="180"
- y="85.85"
- id="tspan13361">PSK: S3cr3tStr1ng
-</tspan><tspan
- x="180"
- y="100.85"
- id="tspan13363">Date: jun/17/2021
-</tspan><tspan
- x="180"
- y="115.85"
- id="tspan13365">
-</tspan><tspan
- x="180"
- y="130.85"
- id="tspan13367">A client device specific rule must not exist!</tspan></text>
- <text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:2.38125px;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="2.6538308"
- y="34.683964"
- id="text8530"><tspan
- sodipodi:role="line"
- id="tspan25760"
- x="2.6538308"
- y="34.683964"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.175px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">🔗 https://www.eworm.de/cgi-bin/cqrlogo-wifi.cgi?</tspan><tspan
- sodipodi:role="line"
- id="tspan25762"
- x="2.6538308"
- y="39.528858"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.175px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">scale=8&amp;level=1&amp;ssid=Guest-Wifi&amp;pass=S3cr3tStr1ng</tspan></text>
- </g>
-</svg>
diff --git a/doc/daily-psk.md b/doc/daily-psk.md
index e27c2c9..3894d52 100644
--- a/doc/daily-psk.md
+++ b/doc/daily-psk.md
@@ -1,7 +1,14 @@
Use wireless network with daily psk
===================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -14,28 +21,35 @@ passphrase to a pseudo-random string daily.
### Sample notification
-![daily-psk notification](daily-psk.d/notification.svg)
+![daily-psk notification](daily-psk.d/notification.avif)
Requirements and installation
-----------------------------
Just install this script.
-Depending on whether you use CAPsMAN (`/caps-man`) or local wireless
-interface (`/interface/wireless`) you need to install a different script.
+Depending on whether you use `wifi` package (`/interface/wifi`), legacy
+wifi with CAPsMAN (`/caps-man`) or local wireless interface
+(`/interface/wireless`) you need to install a different script and add
+schedulers to run the script:
-For CAPsMAN:
+For `wifi`:
- $ScriptInstallUpdate daily-psk.capsman;
+ $ScriptInstallUpdate daily-psk.wifi;
+ /system/scheduler/add interval=1d name=daily-psk on-event="/system/script/run daily-psk.wifi;" start-time=03:00:00;
+ /system/scheduler/add name=daily-psk@startup on-event="/system/script/run daily-psk.wifi;" start-time=startup;
-For local interface:
+For legacy CAPsMAN:
- $ScriptInstallUpdate daily-psk.local;
+ $ScriptInstallUpdate daily-psk.capsman;
+ /system/scheduler/add interval=1d name=daily-psk on-event="/system/script/run daily-psk.capsman;" start-time=03:00:00;
+ /system/scheduler/add name=daily-psk@startup on-event="/system/script/run daily-psk.capsman;" start-time=startup;
-And add schedulers to run the script:
+For legacy local interface:
- /system/scheduler/add interval=1d name=daily-psk-nightly on-event="/system/script/run daily-psk.local;" start-date=may/23/2018 start-time=03:00:00;
- /system/scheduler/add name=daily-psk-startup on-event="/system/script/run daily-psk.local;" start-time=startup;
+ $ScriptInstallUpdate daily-psk.local;
+ /system/scheduler/add interval=1d name=daily-psk on-event="/system/script/run daily-psk.local;" start-time=03:00:00;
+ /system/scheduler/add name=daily-psk@startup on-event="/system/script/run daily-psk.local;" start-time=startup;
These will update the passphrase on boot and nightly at 3:00.
@@ -47,14 +61,28 @@ The configuration goes to `global-config-overlay`, these are the parameters:
* `DailyPskMatchComment`: pattern to match the wireless access list comment
* `DailyPskSecrets`: an array with pseudo random strings
-Then add an access list entry:
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
+
+Then add an access list entry. For `wifi`:
+
+ /interface/wifi/access-list/add comment="Daily PSK" ssid-regexp="-guest\$" passphrase="ToBeChangedDaily";
+
+For legacy CAPsMAN:
+
+ /caps-man/access-list/add comment="Daily PSK" ssid-regexp="-guest\$" private-passphrase="ToBeChangedDaily";
+
+For legacy local interface:
/interface/wireless/access-list/add comment="Daily PSK" interface=wl-daily private-pre-shared-key="ToBeChangedDaily";
-Also notification settings are required for e-mail,
-[matrix](mod/notification-matrix.md) and/or
+Also notification settings are required for
+[e-mail](mod/notification-email.md),
+[trix](mod/notification-matrix.md),
+[ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md).
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/dhcp-lease-comment.md b/doc/dhcp-lease-comment.md
index bb9222e..f95b124 100644
--- a/doc/dhcp-lease-comment.md
+++ b/doc/dhcp-lease-comment.md
@@ -1,7 +1,14 @@
Comment DHCP leases with info from access list
==============================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -15,14 +22,19 @@ from wireless access list.
Requirements and installation
-----------------------------
-Depending on whether you use CAPsMAN (`/caps-man`) or local wireless
-interface (`/interface/wireless`) you need to install a different script.
+Depending on whether you use `wifi` package (`/interface/wifi`), legacy
+wifi with CAPsMAN (`/caps-man`) or local wireless interface
+(`/interface/wireless`) you need to install a different script.
+
+For `wifi`:
+
+ $ScriptInstallUpdate dhcp-lease-comment.wifi;
-For CAPsMAN:
+For legacy CAPsMAN:
$ScriptInstallUpdate dhcp-lease-comment.capsman;
-For local interface:
+For legacy local interface:
$ScriptInstallUpdate dhcp-lease-comment.local;
@@ -48,5 +60,5 @@ See also
* [Run other scripts on DHCP lease](lease-script.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/dhcp-to-dns.md b/doc/dhcp-to-dns.md
index bde7f12..13d5ef3 100644
--- a/doc/dhcp-to-dns.md
+++ b/doc/dhcp-to-dns.md
@@ -1,7 +1,14 @@
Create DNS records for DHCP leases
==================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -9,7 +16,9 @@ Create DNS records for DHCP leases
Description
-----------
-This script adds (and removes) dns records based on dhcp server leases.
+This script adds (and updates & removes) dns records based on dhcp server
+leases. An A record based on mac address is created for all bound lease,
+additionally a CNAME record is created from host name if available.
Requirements and installation
-----------------------------
@@ -32,12 +41,44 @@ On first run a disabled static dns record acting as marker (with comment
"`--- dhcp-to-dns above ---`") is added. Move this entry to define where new
entries are to be added.
-The configuration goes to `global-config-overlay`, these are the parameters:
+The configuration goes to dhcp server's network definition. The domain is
+used to form the dns name:
+
+ /ip/dhcp-server/network/add address=10.0.0.0/24 domain=example.com;
+
+A bound lease for mac address `00:11:22:33:44:55` with ip address
+`10.0.0.50` would result in an A record `00-11-22-33-44-55.example.com`
+pointing to the given ip address.
+
+Additional options can be given from comment, to add an extra level in
+dns name or define a different domain.
+
+ /ip/dhcp-server/network/add address=10.0.0.0/24 domain=example.com comment="domain=another-domain.com, name-extra=dhcp";
+
+This example would result in name `00-11-22-33-44-55.dhcp.another-domain.com`
+for the same lease.
+
+If no domain is found in dhcp server's network definition a fallback from
+`global-config-overlay` is used. This is the parameter:
* `Domain`: the domain used for dns records
-* `HostNameInZone`: whether or not to add the dhcp/dns server's hostname
-* `PrefixInZone`: whether or not to add prefix `dhcp`
-* `ServerNameInZone`: whether or not to add DHCP server name
+
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
+
+### Host name from DHCP lease comment
+
+Overwriting the host name from dhcp lease comment is supported, just add
+something like `hostname=new-hostname` in comment, and separate it by comma
+from other information if required:
+
+ /ip/dhcp-server/lease/add address=10.0.0.50 comment="my device, hostname=new-hostname" mac-address=00:11:22:33:44:55 server=dhcp;
+
+Note this information can be configured in wireless access list with
+[dhcp-lease-comment](dhcp-lease-comment.md), though it comes with a delay
+then due to script execution order. Decrease the scheduler interval to
+reduce the effect.
See also
--------
@@ -48,5 +89,5 @@ See also
* [Run other scripts on DHCP lease](lease-script.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/firmware-upgrade-reboot.md b/doc/firmware-upgrade-reboot.md
index 0215ce9..bac17a7 100644
--- a/doc/firmware-upgrade-reboot.md
+++ b/doc/firmware-upgrade-reboot.md
@@ -1,7 +1,14 @@
Automatically upgrade firmware and reboot
=========================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -32,5 +39,5 @@ See also
* [Manage system update](packages-update.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/fw-addr-lists.md b/doc/fw-addr-lists.md
new file mode 100644
index 0000000..ac34c88
--- /dev/null
+++ b/doc/fw-addr-lists.md
@@ -0,0 +1,132 @@
+Download, import and update firewall address-lists
+==================================================
+
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
+
+> ℹ️ **Info**: This script can not be used on its own but requires the base
+> installation. See [main README](../README.md) for details.
+
+Description
+-----------
+
+This script downloads, imports and updates firewall address-lists. Its main
+purpose is to block attacking ip addresses, spam hosts, command-and-control
+servers and similar malicious entities. The default configuration contains
+lists from [abuse.ch](https://abuse.ch/) and
+[dshield.org](https://dshield.org/), and
+lists from [spamhaus.org](https://spamhaus.org/) are prepared.
+
+The address-lists are updated in place, so after initial import you will not
+see situation when the lists are not populated.
+
+To mitigate man-in-the-middle attacks with altered lists the server's
+certificate is checked.
+
+> ⚠️ **Warning**: The script does not limit the size of a list, but keep in
+> mind that huge lists can exhaust your device's resources (RAM and CPU),
+> and may take a long time to process.
+
+Requirements and installation
+-----------------------------
+
+Just install the script:
+
+ $ScriptInstallUpdate fw-addr-lists;
+
+And add two schedulers, first one for initial import after startup, second
+one for subsequent updates:
+
+ /system/scheduler/add name="fw-addr-lists@startup" start-time=startup on-event="/system/script/run fw-addr-lists;";
+ /system/scheduler/add name="fw-addr-lists" start-time=startup interval=2h on-event="/system/script/run fw-addr-lists;";
+
+> ℹ️ **Info**: Modify the interval to your needs, but it is recommended to
+> use less than half of the configured timeout for expiration.
+
+Configuration
+-------------
+
+The configuration goes to `global-config-overlay`, these are the parameters:
+
+* `FwAddrLists`: a list of firewall address-lists to download and import
+* `FwAddrListTimeOut`: the timeout for expiration without renew
+
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
+
+Naming a certificate for a list makes the script verify the server
+certificate, so you should add that if possible. Some certificates are
+available in my repository and downloaded automatically. Import it manually
+(menu `/certificate/`) if missing.
+
+Create firewall rules to process the packets that are related to addresses
+from address-lists.
+
+### IPv4 rules
+
+This rejects the packets from and to IPv4 addresses listed in
+address-list `block`.
+
+ /ip/firewall/filter/add chain=input src-address-list=block action=reject reject-with=icmp-admin-prohibited;
+ /ip/firewall/filter/add chain=forward src-address-list=block action=reject reject-with=icmp-admin-prohibited;
+ /ip/firewall/filter/add chain=forward dst-address-list=block action=reject reject-with=icmp-admin-prohibited;
+ /ip/firewall/filter/add chain=output dst-address-list=block action=reject reject-with=icmp-admin-prohibited;
+
+You may want to have an address-list to allow specific addresses, as prepared
+with a list `allow`. In fact you can use any list name, just change the
+default ones or add your own - matching in configuration and firewall rules.
+
+ /ip/firewall/filter/add chain=input src-address-list=allow action=accept;
+ /ip/firewall/filter/add chain=forward src-address-list=allow action=accept;
+ /ip/firewall/filter/add chain=forward dst-address-list=allow action=accept;
+ /ip/firewall/filter/add chain=output dst-address-list=allow action=accept;
+
+Modify these for your needs, but **most important**: Move the rules up in
+chains and make sure they actually take effect as expected!
+
+Alternatively handle the packets in firewall's raw section if you prefer:
+
+ /ip/firewall/raw/add chain=prerouting src-address-list=block action=drop;
+ /ip/firewall/raw/add chain=prerouting dst-address-list=block action=drop;
+ /ip/firewall/raw/add chain=output dst-address-list=block action=drop;
+
+> ⚠️ **Warning**: Just again... The order of firewall rules is important. Make
+> sure they actually take effect as expected!
+
+### IPv6 rules
+
+These are the same rules, but for IPv6.
+
+Reject packets in address-list `block`:
+
+ /ipv6/firewall/filter/add chain=input src-address-list=block action=reject reject-with=icmp-admin-prohibited;
+ /ipv6/firewall/filter/add chain=forward src-address-list=block action=reject reject-with=icmp-admin-prohibited;
+ /ipv6/firewall/filter/add chain=forward dst-address-list=block action=reject reject-with=icmp-admin-prohibited;
+ /ipv6/firewall/filter/add chain=output dst-address-list=block action=reject reject-with=icmp-admin-prohibited;
+
+Allow packets in address-list `allow`:
+
+ /ipv6/firewall/filter/add chain=input src-address-list=allow action=accept;
+ /ipv6/firewall/filter/add chain=forward src-address-list=allow action=accept;
+ /ipv6/firewall/filter/add chain=forward dst-address-list=allow action=accept;
+ /ipv6/firewall/filter/add chain=output dst-address-list=allow action=accept;
+
+Drop packets in firewall's raw section:
+
+ /ipv6/firewall/raw/add chain=prerouting src-address-list=block action=drop;
+ /ipv6/firewall/raw/add chain=prerouting dst-address-list=block action=drop;
+ /ipv6/firewall/raw/add chain=output dst-address-list=block action=drop;
+
+> ⚠️ **Warning**: Just again... The order of firewall rules is important. Make
+> sure they actually take effect as expected!
+
+---
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/global-wait.md b/doc/global-wait.md
index ac3e5cc..4b42717 100644
--- a/doc/global-wait.md
+++ b/doc/global-wait.md
@@ -1,7 +1,14 @@
Wait for global functions and modules
=====================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -36,5 +43,5 @@ See also
* [Manage VLANs on bridge ports](mod/bridge-port-vlan.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/gps-track.md b/doc/gps-track.md
index c7d28f6..7006fb3 100644
--- a/doc/gps-track.md
+++ b/doc/gps-track.md
@@ -1,7 +1,14 @@
Send GPS position to server
===========================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -32,9 +39,13 @@ The configuration goes to `global-config-overlay`, the only parameter is:
* `GpsTrackUrl`: the url to send json data to
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
+
The configured coordinate format (see `/system/gps`) defines the format
sent to the server.
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/hotspot-to-wpa.md b/doc/hotspot-to-wpa.md
index 211d4fb..275fe4d 100644
--- a/doc/hotspot-to-wpa.md
+++ b/doc/hotspot-to-wpa.md
@@ -1,7 +1,14 @@
-Use WPA2 network with hotspot credentials
-=========================================
+Use WPA network with hotspot credentials
+========================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -10,37 +17,56 @@ Description
-----------
RouterOS supports an unlimited number of MAC address specific passphrases
-for WPA2 encrypted wifi networks via access list. The idea of this script
-is to transfer hotspot credentials to MAC address specific WPA2 passphrase.
+for WPA encrypted wifi networks via access list. The idea of this script
+is to transfer hotspot credentials to MAC address specific WPA passphrase.
Requirements and installation
-----------------------------
-You need a properly configured hotspot on one (open) SSID and a WP2 enabled
+You need a properly configured hotspot on one (open) SSID and a WPA enabled
SSID with suffix "`-wpa`".
-Then install the script:
+Then install the script.
+Depending on whether you use `wifi` package (`/interface/wifi`)or legacy
+wifi with CAPsMAN (`/caps-man`) you need to install a different script and
+set it as `on-login` script in hotspot.
+
+For `wifi`:
- $ScriptInstallUpdate hotspot-to-wpa;
+ $ScriptInstallUpdate hotspot-to-wpa.wifi;
+ /ip/hotspot/user/profile/set on-login="hotspot-to-wpa.wifi" [ find ];
-Configure your hotspot to use this script as `on-login` script:
+For legacy CAPsMAN:
- /ip/hotspot/user/profile/set on-login=hotspot-to-wpa [ find ];
+ $ScriptInstallUpdate hotspot-to-wpa.capsman;
+ /ip/hotspot/user/profile/set on-login="hotspot-to-wpa.capsman" [ find ];
### Automatic cleanup
With just `hotspot-to-wpa` installed the mac addresses will last in the
-access list forever. Install the optional script for automatic cleanup:
+access list forever. Install the optional script for automatic cleanup
+and add a scheduler.
+
+For `wifi`:
+
+ $ScriptInstallUpdate hotspot-to-wpa-cleanup.wifi,lease-script;
+ /system/scheduler/add interval=1d name=hotspot-to-wpa-cleanup on-event="/system/script/run hotspot-to-wpa-cleanup.wifi;" start-time=startup;
- $ScriptInstallUpdate hotspot-to-wpa-cleanup,lease-script;
+For legacy CAPsMAN:
-Create a scheduler:
+ $ScriptInstallUpdate hotspot-to-wpa-cleanup.capsman,lease-script;
+ /system/scheduler/add interval=1d name=hotspot-to-wpa-cleanup on-event="/system/script/run hotspot-to-wpa-cleanup.capsman;" start-time=startup;
- /system/scheduler/add interval=1d name=hotspot-to-wpa-cleanup on-event="/system/script/run hotspot-to-wpa-cleanup;" start-time=startup;
+And add the lease script and matcher comment to your wpa interfaces' dhcp
+server. You can add more information to the comment, separated by comma. In
+this example the server is called `hotspot-to-wpa`.
-And add the lease script to your wpa interfaces' dhcp server:
+ /ip/dhcp-server/set lease-script=lease-script comment="hotspot-to-wpa=wpa" hotspot-to-wpa;
- /ip/dhcp-server/set lease-script=lease-script [ find where name~"wpa" ];
+You can specify the timeout after which a device is removed from leases and
+access-list. The default is four weeks.
+
+ /ip/dhcp-server/set lease-script=lease-script comment="hotspot-to-wpa=wpa, timeout=2w" hotspot-to-wpa;
Configuration
-------------
@@ -54,17 +80,25 @@ Create hotspot login credentials:
/ip/hotspot/user/add comment="Test User 1" name=user1 password=v3ry;
/ip/hotspot/user/add comment="Test User 2" name=user2 password=s3cr3t;
+This also works with authentication via radius, but is limited then:
+Additional information is not available, including the password.
+
Additionally templates can be created to give more options for access list:
* `action`: set to `reject` to ignore logins on that hotspot
-* `private-passphrase`: do **not** use passphrase from hotspot's user
- credentials, but given one - or unset (use default passphrase) with
- special word `ignore`
+* `passphrase` or `private-passphrase`: do **not** use passphrase from
+ hotspot's user credentials, but given one - or unset (use default
+ passphrase) with special word `ignore`
* `ssid-regexp`: set a different SSID regular expression to match
* `vlan-id`: connect device to specific VLAN
* `vlan-mode`: set the VLAN mode for device
-For a hotspot called `example` the template could look like this:
+For a hotspot called `example` the template could look like this.
+For `wifi`:
+
+ /interface/wifi/access-list/add comment="hotspot-to-wpa template example" disabled=yes passphrase="ignore" ssid-regexp="^example\$" vlan-id=10;
+
+For legacy CAPsMAN:
/caps-man/access-list/add comment="hotspot-to-wpa template example" disabled=yes private-passphrase="ignore" ssid-regexp="^example\$" vlan-id=10 vlan-mode=use-tag;
@@ -77,7 +111,7 @@ Usage and invocation
--------------------
Now let the users connect and login to the hotspot. After that the devices
-(identified by MAC address) can connect to the WPA2 network, using the
+(identified by MAC address) can connect to the WPA network, using the
passphrase from hotspot credentials.
See also
@@ -86,5 +120,5 @@ See also
* [Run other scripts on DHCP lease](lease-script.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/ip-addr-bridge.md b/doc/ip-addr-bridge.md
index 75685bb..941a8ae 100644
--- a/doc/ip-addr-bridge.md
+++ b/doc/ip-addr-bridge.md
@@ -1,7 +1,14 @@
Manage IP addresses with bridge status
======================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
Description
-----------
@@ -21,12 +28,12 @@ Just install the script:
/system/scheduler/add name=ip-addr-bridge on-event="/system/script/run ip-addr-bridge;" start-time=startup;
-This will disable IP addresses on bridges without at lease one running port.
+This will disable IP addresses on bridges without at least one running port.
The IP address is enabled if at least one port is running.
Note that IP addresses on bridges without a single port (acting as loopback
interface) are ignored.
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/ipsec-to-dns.md b/doc/ipsec-to-dns.md
index 87ad21a..0a91960 100644
--- a/doc/ipsec-to-dns.md
+++ b/doc/ipsec-to-dns.md
@@ -1,7 +1,14 @@
Create DNS records for IPSec peers
==================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -36,11 +43,15 @@ The configuration goes to `global-config-overlay`, these are the parameters:
* `HostNameInZone`: whether or not to add the ipsec/dns server's hostname
* `PrefixInZone`: whether or not to add prefix `ipsec`
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
+
See also
--------
* [Create DNS records for DHCP leases](dns-to-dhcp.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/ipv6-update.md b/doc/ipv6-update.md
index 7c5a943..20265fe 100644
--- a/doc/ipv6-update.md
+++ b/doc/ipv6-update.md
@@ -1,7 +1,14 @@
Update configuration on IPv6 prefix change
==========================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -11,7 +18,7 @@ Description
With changing IPv6 prefix from ISP this script handles to update...
-* ipv6 firewall address-list
+* ipv6 firewall address-list (prefixes (`/64`) and host addresses (`/128`))
* dns records
Requirements and installation
@@ -52,6 +59,11 @@ has to be associated to an interface in comment:
/ipv6/firewall/address-list/add address=2003:cf:2f0f:de01::/64 comment="ipv6-pool-isp, interface=br-local" list=local;
+Updating address list entries with host addresses works as well, the new
+prefix is combinded with given suffix then:
+
+ /ipv6/firewall/address-list/add address=2003:cf:2f0f:de01:e3e0:f8fa:8cd6:dbe1/128 comment="ipv6-pool-isp, interface=br-local" list=hosts;
+
Static DNS records need a special comment to be updated. Again it has to
start with "`ipv6-pool-`" and actual pool name, followed by a comma,
"`interface=`" and the name of interface this address is connected to:
@@ -64,5 +76,5 @@ See also
* [Run scripts on ppp connection](ppp-on-up.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/lease-script.md b/doc/lease-script.md
index a435d43..4d2f3bc 100644
--- a/doc/lease-script.md
+++ b/doc/lease-script.md
@@ -1,7 +1,14 @@
Run other scripts on DHCP lease
===============================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -40,8 +47,8 @@ See also
* [Collect MAC addresses in wireless access list](collect-wireless-mac.md)
* [Comment DHCP leases with info from access list](dhcp-lease-comment.md)
* [Create DNS records for DHCP leases](dhcp-to-dns.md)
-* [Use WPA2 network with hotspot credentials](hotspot-to-wpa.md)
+* [Use WPA network with hotspot credentials](hotspot-to-wpa.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/leds-mode.md b/doc/leds-mode.md
index 65f9f01..90ea418 100644
--- a/doc/leds-mode.md
+++ b/doc/leds-mode.md
@@ -1,7 +1,14 @@
Manage LEDs dark mode
=====================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
Description
-----------
@@ -46,5 +53,5 @@ See also
* [Mode button with multiple presses](mode-button.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/log-forward.d/notification.avif b/doc/log-forward.d/notification.avif
new file mode 100644
index 0000000..a0f9ab3
--- /dev/null
+++ b/doc/log-forward.d/notification.avif
Binary files differ
diff --git a/doc/log-forward.d/notification.svg b/doc/log-forward.d/notification.svg
deleted file mode 100644
index 373144b..0000000
--- a/doc/log-forward.d/notification.svg
+++ /dev/null
@@ -1,192 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- width="573.77948"
- height="203.77945"
- viewBox="0 0 151.81249 53.91663"
- version="1.1"
- id="svg8"
- inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
- sodipodi:docname="log-forward.svg"
- inkscape:export-filename="logo.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <defs
- id="defs2">
- <rect
- x="180"
- y="0"
- width="470.72174"
- height="388.66614"
- id="rect4813" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.52"
- inkscape:cx="144.40789"
- inkscape:cy="143.42105"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- inkscape:document-rotation="0"
- showgrid="true"
- units="px"
- inkscape:window-width="1920"
- inkscape:window-height="1047"
- inkscape:window-x="0"
- inkscape:window-y="33"
- inkscape:window-maximized="1"
- inkscape:pagecheckerboard="0"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0">
- <inkscape:grid
- type="xygrid"
- id="grid833"
- originx="16.375006"
- originy="11.083318" />
- </sodipodi:namedview>
- <metadata
- id="metadata5">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(16.374996,11.083327)">
- <rect
- style="fill:#e6e6e6;stroke:#6c5d53;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="rect857"
- width="150.81248"
- height="52.916653"
- x="-15.875002"
- y="-10.583333"
- rx="1.885156" />
- <g
- id="g884"
- transform="matrix(0.5,0,0,0.5,-12.40625,-7.1145834)"
- style="stroke-width:2">
- <path
- sodipodi:type="star"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264584;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="path899"
- sodipodi:sides="4"
- sodipodi:cx="12.700001"
- sodipodi:cy="12.700001"
- sodipodi:r1="14.81729"
- sodipodi:r2="10.477405"
- sodipodi:arg1="0.78539816"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="true"
- inkscape:rounded="0.2"
- inkscape:randomized="0"
- d="m 23.177407,23.177407 c -2.963458,2.963458 -17.9913546,2.963458 -20.9548127,0 -2.96345803,-2.963458 -2.96345808,-17.9913546 0,-20.9548127 2.963458,-2.96345803 17.9913547,-2.96345808 20.9548127,0 2.963458,2.963458 2.963458,17.9913547 0,20.9548127 z" />
- <g
- id="g871"
- style="stroke-width:2">
- <g
- aria-label="#!rsc"
- id="text837">
- <path
- d="M 7.483197,16.645533 V 15.621671 H 6.9371377 l 0.165768,-1.277388 H 5.8255169 l -0.165768,1.277388 h -0.975106 l 0.165768,-1.277388 H 3.5730221 l -0.165768,1.277388 H 2.7051778 v 1.023862 H 3.2707393 L 3.0269628,18.517736 H 2.3443886 v 1.023861 H 2.890448 L 2.7051778,20.935999 H 3.9825666 L 4.1678368,19.541597 H 5.1429427 L 4.9576726,20.935999 H 6.2350614 L 6.4203315,19.541597 H 7.1224078 V 18.517736 H 6.5568464 l 0.2437764,-1.872203 z m -2.2037394,1.872203 h -0.975106 l 0.2437765,-1.872203 h 0.975106 z"
- style="stroke-width:0.529163px"
- id="path851" />
- <path
- d="m 9.6186715,14.178515 h -1.638178 l 0.1950212,4.270964 h 1.2481356 z m -0.819089,5.15831 c -0.487553,0 -0.8775954,0.399794 -0.8775954,0.877596 0,0.487552 0.3900424,0.887346 0.8775954,0.887346 0.497304,0 0.8873464,-0.399794 0.8873464,-0.887346 0,-0.477802 -0.3900424,-0.877596 -0.8873464,-0.877596 z"
- style="stroke-width:0.529163px"
- id="path853" />
- <path
- d="m 13.372827,15.61192 c -0.594815,0 -1.10187,0.429047 -1.335895,1.150625 l -0.136515,-1.004359 h -1.335895 v 5.177813 h 1.540667 v -2.603533 c 0.175519,-0.770334 0.438798,-1.228633 1.072617,-1.228633 0.165768,0 0.302283,0.02925 0.468051,0.06826 l 0.243776,-1.491912 c -0.175519,-0.04875 -0.321785,-0.06826 -0.516806,-0.06826 z"
- style="stroke-width:0.529163px"
- id="path855" />
- <path
- d="m 16.181119,15.592418 c -1.306642,0 -2.11598,0.692326 -2.11598,1.579672 0,0.799587 0.507055,1.326144 1.530916,1.618676 0.936102,0.263278 1.092119,0.37054 1.092119,0.721578 0,0.312034 -0.282781,0.487553 -0.750832,0.487553 -0.507055,0 -0.984857,-0.204772 -1.374899,-0.507055 l -0.750832,0.838591 c 0.507055,0.4583 1.267638,0.770334 2.164736,0.770334 1.287139,0 2.30125,-0.633819 2.30125,-1.706435 0,-0.926351 -0.575313,-1.355398 -1.599174,-1.64793 -0.926351,-0.273029 -1.062866,-0.390042 -1.062866,-0.663072 0,-0.234025 0.204773,-0.390042 0.624068,-0.390042 0.448549,0 0.877595,0.146266 1.277389,0.399793 l 0.565561,-0.867844 C 17.604773,15.836195 16.93195,15.592418 16.181119,15.592418 Z"
- style="stroke-width:0.529163px"
- id="path857" />
- <path
- d="m 21.280919,15.592418 c -1.550418,0 -2.535275,1.150625 -2.535275,2.798554 0,1.638178 0.975106,2.710795 2.564528,2.710795 0.711828,0 1.267638,-0.234026 1.74544,-0.614317 l -0.672823,-0.955604 c -0.37054,0.234026 -0.624068,0.351038 -0.994608,0.351038 -0.614317,0 -1.023861,-0.351038 -1.023861,-1.501663 0,-1.160376 0.380291,-1.608925 1.043363,-1.608925 0.351038,0 0.653321,0.117013 0.984857,0.370541 l 0.663072,-0.9166 c -0.497304,-0.419295 -1.053114,-0.633819 -1.774693,-0.633819 z"
- style="stroke-width:0.529163px"
- id="path859" />
- </g>
- <g
- id="g1542"
- transform="matrix(2,0,0,2,-0.41134438,3.175)"
- style="stroke-width:1">
- <path
- d="M 4.9596016,-1.0195918 C 5.3675734,1.8116029 6.8867822,3.5302649 9.983482,3.6714361 7.0655129,4.7878541 4.0581782,2.1638833 4.9596016,-1.0195918"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path943" />
- <path
- d="m 3.3406657,-0.52095963 c 0.034969,-0.00777 0.038854,0.015542 0.041445,0.041445 C 3.4805417,1.3259222 4.2420891,2.6948942 5.2510098,3.6312866 6.2599306,4.5676787 7.6146558,5.3253406 9.525,5.2916667 5.9477993,6.7163303 2.1879835,3.2932527 3.3393705,-0.52095963"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path945" />
- </g>
- </g>
- </g>
- <text
- xml:space="preserve"
- transform="matrix(0.26458333,0,0,0.26458333,-44.949998,-6.6039318)"
- id="text4811"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:15px;font-family:'Fira Mono', 'Roboto Mono', monospace;-inkscape-font-specification:'Fira Mono, Roboto Mono, monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;white-space:pre;shape-inside:url(#rect4813);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="-248.88142"
- y="0"><tspan
- x="180"
- y="10.85"
- id="tspan2317">[MikroTik] ⚠ Log Forwarding
-</tspan><tspan
- x="180"
- y="26.082813"
- id="tspan2319">
-</tspan><tspan
- x="180"
- y="41.082813"
- id="tspan2321">The log on MikroTik contains these 3 messages after 6d23:55:18 </tspan><tspan
- x="180"
- y="56.082811"
- id="tspan2323">uptime.
-</tspan><tspan
- x="180"
- y="71.082811"
- id="tspan2325">
-</tspan><tspan
- x="180"
- y="86.082811"
- id="tspan2327"> ● 13:24:02 script;error backup-cloud: Failed uploading backup </tspan><tspan
- x="180"
- y="101.08281"
- id="tspan2329">for MikroTik to cloud!
-</tspan><tspan
- x="180"
- y="116.08281"
- id="tspan2331"> ● 13:24:17 system;info;account user admin logged in from </tspan><tspan
- x="180"
- y="131.08281"
- id="tspan2333">192.168.88.177 via ssh
-</tspan><tspan
- x="180"
- y="146.08282"
- id="tspan2335"> ● 13:24:57 system;info;account user admin logged out from </tspan><tspan
- x="180"
- y="161.08282"
- id="tspan2337">192.168.88.177 via ssh</tspan></text>
- </g>
-</svg>
diff --git a/doc/log-forward.md b/doc/log-forward.md
index c91f09a..44409dc 100644
--- a/doc/log-forward.md
+++ b/doc/log-forward.md
@@ -1,7 +1,14 @@
Forward log messages via notification
=====================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -9,20 +16,28 @@ Forward log messages via notification
Description
-----------
-RouterOS supports sending log messages via e-mail or to a syslog server.
-This has some limitation, however:
+RouterOS itself supports sending log messages via e-mail or to a syslog
+server (see `/system/logging`). This has some limitation, however:
* does not work early after boot if network connectivity is not
- yet established
+ yet established, or breaks intermittently
* lots of messages generate a flood of mails
* Matrix and Telegram are not supported
-The script is intended to be run periodically. It collects log messages
-and forwards them via notification.
+The script works around the limitations, for example it does:
+
+* read from `/log`, including messages from early boot
+* skip multi-repeated messages
+* rate-limit itself to mitigate flooding
+* forward via notification (which includes *e-mail*, *Matrix* and *Telegram*
+ when installed and configured, see below)
+
+It is intended to be run periodically from scheduler, then collects new
+log messages and forwards them via notification.
### Sample notification
-![log-forward notification](log-forward.d/notification.svg)
+![log-forward notification](log-forward.d/notification.avif)
Requirements and installation
-----------------------------
@@ -46,10 +61,35 @@ The configuration goes to `global-config-overlay`, these are the parameters:
* `LogForwardIncludeMessage`: define message text to be forwarded (even if
filter matches)
-Also notification settings are required for e-mail,
-[matrix](mod/notification-matrix.md) and/or
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
+
+These patterns are matched as
+[regular expressions](https://wiki.mikrotik.com/wiki/Manual:Regular_Expressions).
+To forward **all** (ignoring severity) log messages with topics `account`
+(which includes user logins) and `dhcp` you need something like:
+
+ :global LogForwardInclude "(account|dhcp)";
+
+Also notification settings are required for
+[e-mail](mod/notification-email.md),
+[matrix](mod/notification-matrix.md),
+[ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md).
+Tips & Tricks
+-------------
+
+### Notification on reboot
+
+You want to receive a notification on every device (re-)boot? Quite easy,
+just add:
+
+ :global LogForwardIncludeMessage "(^router rebooted)";
+
+This will match on every log message beginning with `router rebooted`.
+
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/mod/bridge-port-to.md b/doc/mod/bridge-port-to.md
index 2b42a9b..5c8bebc 100644
--- a/doc/mod/bridge-port-to.md
+++ b/doc/mod/bridge-port-to.md
@@ -1,7 +1,14 @@
Manage ports in bridge
======================
-[◀ Go back to main README](../../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../../README.md)
> ℹ️️ **Info**: This module can not be used on its own but requires the base
> installation. See [main README](../../README.md) for details.
@@ -35,7 +42,7 @@ Also dhcp client can be handled:
Add a scheduler to start with default setup on system startup:
$ScriptInstallUpdate global-wait;
- /system/scheduler/add name=bridge-port-vlan on-event="/system/script/run global-wait; :global BridgePortTo; \$BridgePortTo default;" start-time=startup;
+ /system/scheduler/add name=bridge-port-to on-event="/system/script/run global-wait; :global BridgePortTo; \$BridgePortTo default;" start-time=startup;
Usage and invocation
--------------------
@@ -77,5 +84,5 @@ See also
* [Manage VLANs on bridge ports](bridge-port-vlan.md)
---
-[◀ Go back to main README](../../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/mod/bridge-port-vlan.md b/doc/mod/bridge-port-vlan.md
index 0e6c28f..d23d5b5 100644
--- a/doc/mod/bridge-port-vlan.md
+++ b/doc/mod/bridge-port-vlan.md
@@ -1,7 +1,14 @@
Manage VLANs on bridge ports
============================
-[◀ Go back to main README](../../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../../README.md)
> ℹ️️ **Info**: This module can not be used on its own but requires the base
> installation. See [main README](../../README.md) for details.
@@ -81,5 +88,5 @@ See also
* [Manage ports in bridge](bridge-port-to.md)
---
-[◀ Go back to main README](../../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/mod/inspectvar.md b/doc/mod/inspectvar.md
index 7782c8a..d4e59b3 100644
--- a/doc/mod/inspectvar.md
+++ b/doc/mod/inspectvar.md
@@ -1,7 +1,14 @@
Inspect variables
=================
-[◀ Go back to main README](../../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../../README.md)
> ℹ️️ **Info**: This module can not be used on its own but requires the base
> installation. See [main README](../../README.md) for details.
@@ -29,5 +36,5 @@ Call the function `$InspectVar` with a variable as parameter:
![InspectVar](inspectvar.d/inspectvar.avif)
---
-[◀ Go back to main README](../../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/mod/ipcalc.md b/doc/mod/ipcalc.md
index a3e7fc8..cb655bc 100644
--- a/doc/mod/ipcalc.md
+++ b/doc/mod/ipcalc.md
@@ -1,7 +1,14 @@
IP address calculation
======================
-[◀ Go back to main README](../../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../../README.md)
> ℹ️️ **Info**: This module can not be used on its own but requires the base
> installation. See [main README](../../README.md) for details.
@@ -49,5 +56,5 @@ the information in a named array.
![IPCalcReturn](ipcalc.d/ipcalcreturn.avif)
---
-[◀ Go back to main README](../../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/mod/notification-email.md b/doc/mod/notification-email.md
new file mode 100644
index 0000000..2138e31
--- /dev/null
+++ b/doc/mod/notification-email.md
@@ -0,0 +1,88 @@
+Send notifications via e-mail
+=============================
+
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../../README.md)
+
+> ℹ️️ **Info**: This module can not be used on its own but requires the base
+> installation. See [main README](../../README.md) for details.
+
+Description
+-----------
+
+This module adds support for sending notifications via e-mail. A queue is
+used to make sure notifications are not lost on failure but sent later.
+
+Requirements and installation
+-----------------------------
+
+Just install the module:
+
+ $ScriptInstallUpdate mod/notification-email;
+
+Also you need a valid e-mail account with smtp login credentials.
+
+Configuration
+-------------
+
+Set up your device's
+[e-mail settings](https://wiki.mikrotik.com/wiki/Manual:Tools/email).
+Also make sure the device has correct time configured, best is to set up
+the ntp client.
+
+Then edit `global-config-overlay`, add `EmailGeneralTo` with a valid
+recipient address. Finally reload the configuration.
+
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
+
+### Sending to several recipients
+
+Sending notifications to several recipients is possible as well. Add
+`EmailGeneralCc` on top, which can have a single mail address or a comma
+separated list.
+
+Usage and invocation
+--------------------
+
+There's nothing special to do. Every script or function sending a notification
+will now send it to your e-mail account.
+
+But of course you can use the function to send notifications directly. Give
+it a try:
+
+ $SendEMail "Subject..." "Body...";
+
+Alternatively this sends a notification with all available and configured
+methods:
+
+ $SendNotification "Subject..." "Body...";
+
+To use the functions in your own scripts you have to declare them first.
+Place this before you call them:
+
+ :global SendEMail;
+ :global SendNotification;
+
+In case there is a situation when the queue needs to be purged there is a
+function available:
+
+ $PurgeEMailQueue;
+
+See also
+--------
+
+* [Send notifications via Matrix](notification-matrix.md)
+* [Send notifications via Ntfy](notification-ntfy.md)
+* [Send notifications via Telegram](notification-telegram.md)
+
+---
+[⬅️ Go back to main README](../../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/mod/notification-matrix.d/01-authenticate.avif b/doc/mod/notification-matrix.d/01-authenticate.avif
new file mode 100644
index 0000000..b897943
--- /dev/null
+++ b/doc/mod/notification-matrix.d/01-authenticate.avif
Binary files differ
diff --git a/doc/mod/notification-matrix.d/01-home-server.avif b/doc/mod/notification-matrix.d/01-home-server.avif
deleted file mode 100644
index 683c7b5..0000000
--- a/doc/mod/notification-matrix.d/01-home-server.avif
+++ /dev/null
Binary files differ
diff --git a/doc/mod/notification-matrix.d/02-access-token.avif b/doc/mod/notification-matrix.d/02-access-token.avif
deleted file mode 100644
index 54109a6..0000000
--- a/doc/mod/notification-matrix.d/02-access-token.avif
+++ /dev/null
Binary files differ
diff --git a/doc/mod/notification-matrix.d/02-join-room.avif b/doc/mod/notification-matrix.d/02-join-room.avif
new file mode 100644
index 0000000..ad99ffd
--- /dev/null
+++ b/doc/mod/notification-matrix.d/02-join-room.avif
Binary files differ
diff --git a/doc/mod/notification-matrix.d/03-join-room.avif b/doc/mod/notification-matrix.d/03-join-room.avif
deleted file mode 100644
index 45974b8..0000000
--- a/doc/mod/notification-matrix.d/03-join-room.avif
+++ /dev/null
Binary files differ
diff --git a/doc/mod/notification-matrix.md b/doc/mod/notification-matrix.md
index 3da5659..92383be 100644
--- a/doc/mod/notification-matrix.md
+++ b/doc/mod/notification-matrix.md
@@ -1,7 +1,14 @@
Send notifications via Matrix
=============================
-[◀ Go back to main README](../../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../../README.md)
> ℹ️️ **Info**: This module can not be used on its own but requires the base
> installation. See [main README](../../README.md) for details.
@@ -21,8 +28,8 @@ Just install the module:
$ScriptInstallUpdate mod/notification-matrix;
Also install a Matrix client on at least one of your mobile and/or desktop
-devices. As there is no privilege separation you should create a dedicated
-notification account, in addition to your general user account.
+devices. Create and setup an account there, we will reference that as
+"*general account*" later.
Configuration
-------------
@@ -31,58 +38,60 @@ Edit `global-config-overlay`, add `MatrixHomeServer`, `MatrixAccessToken` and
`MatrixRoom` - see below on hints how to retrieve this information. Then
reload the configuration.
-### Home server
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
-Matrix user accounts are identified by a unique user id in the form of
-`@localpart:domain`. The `domain` part is not necessarily your home server
-address, you have to resolve it with the procedure described in the
-[Matrix specification](https://spec.matrix.org/latest/client-server-api/#server-discovery).
+The Matrix server is connected via encrypted https, and certificate
+verification is applied. So make sure you have the certificate chain for
+your server in device's certificate store.
+
+> ℹ️ **Info**: The *matrix.org* server uses a Cloudflare certificate. You can
+> install that with: `$CertificateAvailable "Cloudflare Inc ECC CA-3"`
-Your best bet is to query the server at `domain` with the
-[well-known uri](https://spec.matrix.org/latest/client-server-api/#well-known-uri).
-For "*matrix.org*" this query is:
+### From other device
- /tool/fetch "https://matrix.org/.well-known/matrix/client" output=user;
+If you have setup your Matrix *notification account* before just reuse that.
+Copy the relevant configuration to the device to be configured.
-![home server](notification-matrix.d/01-home-server.avif)
+### Setup new account
-So the home server for "*matrix.org*" is "*matrix-client.matrix.org*".
-Please strip the protocol ("*https://*") for `MatrixHomeServer` if given.
+As there is no privilege separation you should create a dedicated account
+for use with these scripts, in addition to your *general account*.
+We will reference that as "*notification account*" in the following steps.
-### Access token
+#### Authenticate
-After discovering the correct home server an access token has to be created.
-For this the login credentials (username and password) of the notification
-account must be sent to the home server via
-[client server api](https://matrix.org/docs/guides/client-server-api#login).
+Matrix user accounts are identified by a unique user id in the form of
+`@localpart:domain`. Use that and your password to generate an access token
+and write first part of the configuration:
-We use the home server discovered above, "*matrix-client.matrix.org*".
-The user is "*example*" and password is "*v3ry-s3cr3t*".
+ $SetupMatrixAuthenticate "@example:matrix.org" "v3ry-s3cr3t";
- /tool/fetch "https://matrix-client.matrix.org/_matrix/client/r0/login" http-method=post http-data="{\"type\":\"m.login.password\", \"user\":\"example\", \"password\":\"v3ry-s3cr3t\"}" output=user;
+![authenticate](notification-matrix.d/01-authenticate.avif)
-![access token](notification-matrix.d/02-access-token.avif)
+The configuration is written to a new configuration snippet
+`global-config-overlay.d/mod/notification-matrix`.
-The server replied with a JSON object containing the `access_token`, use that
-for `MatrixAccessToken`.
+#### Join Room
-### Room
+Every Matix chat is a room, so we have to create one. Do that with your
+*general account*, this makes sure your *general account* is the room owner.
+Then join the room and invite the *notification account* by its user id
+"*@example:matrix.org*".
+Look up the *room id* within the Matrix client, it should read like
+"*!WUcxpSjKyxSGelouhA:matrix.org*" (starting with an exclamation mark and
+ending with the domain).
-Every Matix chat is a room, so we have to create one. Do so with your general
-user, this makes sure your general user is the room owner. Then join the room
-and invite the notification user by its user id "*@example:matrix.org*". Look
-up the room id within the Matrix client, it should read like
-"*!WUcxpSjKyxSGelouhA:matrix.org*". Use that for `MatrixRoom`.
+Finally make the *notification account* join into the room by accepting
+the invite.
-Finally join the notification user to the room by accepting the invite. Again,
-this can be done with
-[client server api](https://matrix.org/docs/guides/client-server-api#joining-a-room-via-an-invite).
-Make sure to replace room id ("*!*" is escaped with "*%21*") and access token
-with your data.
+ $SetupMatrixJoinRoom "!WUcxpSjKyxSGelouhA:matrix.org";
- /tool/fetch "https://matrix-client.matrix.org/_matrix/client/r0/rooms/%21WUcxpSjKyxSGelouhA:matrix.org/join?access_token=yt_ZXdvcm0tdGVzdA_NNqUyvKHRhBLZmnzVVSK_0xu6yN" http-method=post http-data="" output=user;
+![join room](notification-matrix.d/02-join-room.avif)
-![join room](notification-matrix.d/03-join-room.avif)
+The configuration is appended to the configuration snippet
+`global-config-overlay.d/mod/notification-matrix`.
Usage and invocation
--------------------
@@ -90,11 +99,34 @@ Usage and invocation
There's nothing special to do. Every script or function sending a notification
will now send it to your Matrix account.
+But of course you can use the function to send notifications directly. Give
+it a try:
+
+ $SendMatrix "Subject..." "Body...";
+
+Alternatively this sends a notification with all available and configured
+methods:
+
+ $SendNotification "Subject..." "Body...";
+
+To use the functions in your own scripts you have to declare them first.
+Place this before you call them:
+
+ :global SendMatrix;
+ :global SendNotification;
+
+In case there is a situation when the queue needs to be purged there is a
+function available:
+
+ $PurgeMatrixQueue;
+
See also
--------
+* [Send notifications via e-mail](notification-email.md)
+* [Send notifications via Ntfy](notification-ntfy.md)
* [Send notifications via Telegram](notification-telegram.md)
---
-[◀ Go back to main README](../../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/mod/notification-ntfy.md b/doc/mod/notification-ntfy.md
new file mode 100644
index 0000000..b2330a5
--- /dev/null
+++ b/doc/mod/notification-ntfy.md
@@ -0,0 +1,91 @@
+Send notifications via Ntfy
+===========================
+
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../../README.md)
+
+> ℹ️️ **Info**: This module can not be used on its own but requires the base
+> installation. See [main README](../../README.md) for details.
+
+Description
+-----------
+
+This module adds support for sending notifications via
+[Ntfy](https://ntfy.sh/). A queue is used to make sure
+notifications are not lost on failure but sent later.
+
+Requirements and installation
+-----------------------------
+
+Just install the module:
+
+ $ScriptInstallUpdate mod/notification-ntfy;
+
+Also install the Ntfy app on your mobile device or use the
+[web app](https://ntfy.sh/app) in a browser of your choice.
+
+Configuration
+-------------
+
+Creating an account is not required. Just choose a topic and you are good
+to go.
+
+> ⚠️ **Warning**: If you use ntfy without sign-up, the topic is essentially
+> a password, so pick something that's not easily guessable.
+
+Edit `global-config-overlay`, add `NtfyServer` (leave it unchanged, unless
+you are self-hosting the service) and `NtfyTopic` with your choosen topic.
+Then reload the configuration.
+
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
+
+Using a paid account or running a server on-premises allows to add additional
+basic authentication. Configure `NtfyServerUser` and `NtfyServerPass` for this.
+Even authentication via access token is possible, adding it as password with
+a blank username.
+
+Usage and invocation
+--------------------
+
+There's nothing special to do. Every script or function sending a notification
+will now send it to your Ntfy topic.
+
+But of course you can use the function to send notifications directly. Give
+it a try:
+
+ $SendNtfy "Subject..." "Body...";
+
+Alternatively this sends a notification with all available and configured
+methods:
+
+ $SendNotification "Subject..." "Body...";
+
+To use the functions in your own scripts you have to declare them first.
+Place this before you call them:
+
+ :global SendNtfy;
+ :global SendNotification;
+
+In case there is a situation when the queue needs to be purged there is a
+function available:
+
+ $PurgeNtfyQueue;
+
+See also
+--------
+
+* [Send notifications via e-mail](notification-email.md)
+* [Send notifications via Matrix](notification-matrix.md)
+* [Send notifications via Telegram](notification-telegram.md)
+
+---
+[⬅️ Go back to main README](../../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/mod/notification-telegram.d/setuserpic.avif b/doc/mod/notification-telegram.d/setuserpic.avif
new file mode 100644
index 0000000..2017d20
--- /dev/null
+++ b/doc/mod/notification-telegram.d/setuserpic.avif
Binary files differ
diff --git a/doc/mod/notification-telegram.md b/doc/mod/notification-telegram.md
index 435694e..159fda9 100644
--- a/doc/mod/notification-telegram.md
+++ b/doc/mod/notification-telegram.md
@@ -1,7 +1,14 @@
Send notifications via Telegram
===============================
-[◀ Go back to main README](../../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../../README.md)
> ℹ️️ **Info**: This module can not be used on its own but requires the base
> installation. See [main README](../../README.md) for details.
@@ -41,6 +48,10 @@ Finally edit `global-config-overlay`, add `TelegramTokenId` with the token
from *BotFather* and `TelegramChatId` with your id from *GetIDs Bot*. Then
reload the configuration.
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
+
### Notifications to a group
Sending notifications to a group is possible as well. Add your bot and the
@@ -53,11 +64,49 @@ Usage and invocation
There's nothing special to do. Every script or function sending a notification
will now send it to your Telegram account.
+But of course you can use the function to send notifications directly. Give
+it a try:
+
+ $SendTelegram "Subject..." "Body...";
+
+Alternatively this sends a notification with all available and configured
+methods:
+
+ $SendNotification "Subject..." "Body...";
+
+To use the functions in your own scripts you have to declare them first.
+Place this before you call them:
+
+ :global SendTelegram;
+ :global SendNotification;
+
+In case there is a situation when the queue needs to be purged there is a
+function available:
+
+ $PurgeTelegramQueue;
+
+Tips & Tricks
+-------------
+
+### Set a profile photo
+
+You can use a profile photo for your bot to make it recognizable. Open the
+chat with [BotFather](https://t.me/BotFather) and set it there.
+
+![set profile photo](notification-telegram.d/setuserpic.avif)
+
+Have a look at my
+[RouterOS-Scripts Logo Color Changer](https://git.eworm.de/cgit/routeros-scripts/plain/contrib/logo-color.html)
+to create a colored version of this scripts' logo.
+
See also
--------
+* [Chat with your router and send commands via Telegram bot](../telegram-chat.md)
+* [Send notifications via e-mail](notification-email.md)
* [Send notifications via Matrix](notification-matrix.md)
+* [Send notifications via Ntfy](notification-ntfy.md)
---
-[◀ Go back to main README](../../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/mod/scriptrunonce.md b/doc/mod/scriptrunonce.md
index 6efa1b7..c5fa891 100644
--- a/doc/mod/scriptrunonce.md
+++ b/doc/mod/scriptrunonce.md
@@ -1,7 +1,14 @@
Download script and run it once
===============================
-[◀ Go back to main README](../../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../../README.md)
> ℹ️️ **Info**: This module can not be used on its own but requires the base
> installation. See [main README](../../README.md) for details.
@@ -27,9 +34,13 @@ The optional configuration goes to `global-config-overlay`.
* `ScriptRunOnceBaseUrl`: base url, prepended to parameter
* `ScriptRunOnceUrlSuffix`: url suffix, appended to parameter
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
+
If the parameter passed to the function is not a complete URL (starting
-with protocol `ftp://`, `http://`, `https://` or `sftp://`) the values are
-prepended and appended.
+with protocol `ftp://`, `http://`, `https://` or `sftp://`) the base-url is
+prepended, and file extension `.rsc` and url-suffix are appended.
Usage and invocation
--------------------
@@ -44,5 +55,5 @@ The function `$ScriptRunOnce` expects an URL (or name if
Giving multiple scripts is possible, separated by comma.
---
-[◀ Go back to main README](../../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/mod/ssh-keys-import.md b/doc/mod/ssh-keys-import.md
new file mode 100644
index 0000000..db8e322
--- /dev/null
+++ b/doc/mod/ssh-keys-import.md
@@ -0,0 +1,73 @@
+Import ssh keys for public key authentication
+=============================================
+
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../../README.md)
+
+> ℹ️️ **Info**: This module can not be used on its own but requires the base
+> installation. See [main README](../../README.md) for details.
+
+Description
+-----------
+
+RouterOS supports ssh login with public key authentication. The functions
+in this module help importing the keys.
+
+Requirements and installation
+-----------------------------
+
+Just install the module:
+
+ $ScriptInstallUpdate mod/ssh-keys-import;
+
+Usage and invocation
+--------------------
+
+### Import single key from terminal
+
+Call the function `$SSHKeysImport` with key and user as parameter to
+import that key:
+
+ $SSHKeysImport "ssh-rsa AAAAB3Nza...QYZk8= user" admin;
+
+Starting with RouterOS *7.12beta1* support for keys of type `ed25519` has
+been added:
+
+ $SSHKeysImport "ssh-ed25519 AAAAC3Nza...ZVugJT user" admin;
+
+The third part of the key (`user` in this example) is inherited as
+`key-owner` in RouterOS. Also the `MD5` fingerprint is recorded, this helps
+to audit and verify the available keys.
+
+> ℹ️️ **Info**: Use `ssh-keygen` to show a fingerprint of an existing public
+> key file: `ssh-keygen -l -E md5 -f ~/.ssh/id_ed25519.pub`
+
+### Import several keys from file
+
+The functions `$SSHKeysImportFile` can read an `authorized_keys`-style file
+and import all the keys. The user given to the function can be overwritting
+from comments in the file. Create a file `keys.pub` with this content:
+
+```
+ssh-ed25519 AAAAC3Nza...3OcN8A user@client
+ssh-rsa AAAAB3Nza...ozyts= worker@station
+# user=example
+ssh-rsa AAAAB3Nza...GXQVk= person@host
+```
+
+Then import it with:
+
+ $SSHKeysImportFile keys.pub admin;
+
+This will import the first two keys for user `admin` (as given to function)
+and the third one for user `example` (as defined in comment).
+
+---
+[⬅️ Go back to main README](../../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/mode-button.md b/doc/mode-button.md
index ef7754c..8734352 100644
--- a/doc/mode-button.md
+++ b/doc/mode-button.md
@@ -1,7 +1,14 @@
Mode button with multiple presses
=================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -52,7 +59,11 @@ Configuration
The configuration goes to `global-config-overlay`, these are the parameters:
* `ModeButton`: an array with defined actions
-* `ModeButtonLED`: led to give visual feedback
+* `ModeButtonLED`: led to give visual feedback, `type` must be `on` or `off`
+
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
Usage and invocation
--------------------
@@ -60,5 +71,5 @@ Usage and invocation
Press the mode button. 😜
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/netwatch-dns.md b/doc/netwatch-dns.md
index 798ad92..443106f 100644
--- a/doc/netwatch-dns.md
+++ b/doc/netwatch-dns.md
@@ -1,7 +1,14 @@
Manage DNS and DoH servers from netwatch
========================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -29,25 +36,41 @@ Configuration
The DNS and DoH servers to be checked have to be added to netwatch with
specific comment:
- /tool/netwatch/add comment="doh, hostname=cloudflare-dns" host=1.1.1.1;
- /tool/netwatch/add comment="dns, hostname=google-dns" host=8.8.8.8;
- /tool/netwatch/add comment="doh, dns, hostname=quad-nine" host=9.9.9.10;
+ /tool/netwatch/add comment="doh" host=1.1.1.1;
+ /tool/netwatch/add comment="dns" host=8.8.8.8;
+ /tool/netwatch/add comment="doh, dns" host=9.9.9.9;
This will configure *cloudflare-dns* for DoH (`https://1.1.1.1/dnsquery`), and
-*google-dns* and *quad-nine* for regular DNS (`8.8.8.8,9.9.9.10`) if up.
+*google-dns* and *quad-nine* for regular DNS (`8.8.8.8,9.9.9.9`) if up.
If *cloudflare-dns* is down the script will fall back to *quad-nine* for DoH.
Giving a specific query url for DoH is possible:
- /tool/netwatch/add comment="doh, hostname=nextdns, doh-url=https://dns.nextdns.io/dns-query" host=199.247.16.158;
+ /tool/netwatch/add comment="doh, doh-url=https://dns.nextdns.io/dns-query" host=199.247.16.158;
Note that using a name in DoH url may introduce a chicken-and-egg issue!
+Adding a static DNS record has the same result for the url, but always
+resolves to the same address.
+
+ /ip/dns/static/add name="dns.nextdns.io" address=199.247.16.158;
+ /tool/netwatch/add comment="doh" host=199.247.16.158;
+
+Be aware that you have to keep the ip address in sync with real world
+manually!
+
+Importing a certificate automatically is possible, at least if available in
+the repository (see `certs` sub directory).
+
+ /tool/netwatch/add comment="doh, doh-cert=DigiCert Global G2 TLS RSA SHA256 2020 CA1" host=1.1.1.1;
+ /tool/netwatch/add comment="doh, doh-cert=DigiCert TLS Hybrid ECC SHA384 2020 CA1" host=9.9.9.9;
+ /tool/netwatch/add comment="doh, doh-cert=GTS CA 1C3" host=8.8.8.8;
+
Sometimes using just one specific (possibly internal) DNS server may be
desired, with fallback in case it fails. This is possible as well:
- /tool/netwatch/add comment="dns, hostname=pi-hole" host=10.0.0.10;
- /tool/netwatch/add comment="dns-fallback, hostname=cloudflare-dns" host=1.1.1.1;
+ /tool/netwatch/add comment="dns" host=10.0.0.10;
+ /tool/netwatch/add comment="dns-fallback" host=1.1.1.1;
Tips & Tricks
-------------
@@ -57,7 +80,7 @@ Tips & Tricks
Netwatch entries can be created to work with both - this script and
[netwatch-notify](netwatch-notify.md). Just give options for both:
- /tool/netwatch/add comment="doh, notify, hostname=cloudflare-dns" host=1.1.1.1;
+ /tool/netwatch/add comment="doh, notify, name=cloudflare-dns" host=1.1.1.1;
Also this allows to update host address, see option `resolve`.
@@ -67,5 +90,5 @@ See also
* [Notify on host up and down](netwatch-notify.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/netwatch-notify.d/notification-01-down.avif b/doc/netwatch-notify.d/notification-01-down.avif
new file mode 100644
index 0000000..894fb23
--- /dev/null
+++ b/doc/netwatch-notify.d/notification-01-down.avif
Binary files differ
diff --git a/doc/netwatch-notify.d/notification-01-down.svg b/doc/netwatch-notify.d/notification-01-down.svg
deleted file mode 100644
index 5cab5fe..0000000
--- a/doc/netwatch-notify.d/notification-01-down.svg
+++ /dev/null
@@ -1,168 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- width="463.77954"
- height="93.779518"
- viewBox="0 0 122.70834 24.812492"
- version="1.1"
- id="svg8"
- inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
- sodipodi:docname="netwatch-notify-down.svg"
- inkscape:export-filename="logo.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <defs
- id="defs2">
- <rect
- x="180"
- y="0"
- width="658.20044"
- height="397.81946"
- id="rect4813" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.52"
- inkscape:cx="89.144737"
- inkscape:cy="90.789474"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- inkscape:document-rotation="0"
- showgrid="true"
- units="px"
- inkscape:window-width="1920"
- inkscape:window-height="1047"
- inkscape:window-x="0"
- inkscape:window-y="33"
- inkscape:window-maximized="1"
- inkscape:pagecheckerboard="0"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0">
- <inkscape:grid
- type="xygrid"
- id="grid833"
- originx="16.375006"
- originy="11.083327" />
- </sodipodi:namedview>
- <metadata
- id="metadata5">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(16.374999,11.083332)">
- <rect
- style="fill:#e6e6e6;stroke:#6c5d53;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="rect857"
- width="121.70833"
- height="23.812496"
- x="-15.875"
- y="-10.583333"
- rx="1.5213542" />
- <g
- id="g884"
- transform="matrix(0.5,0,0,0.5,-12.40625,-7.1145834)"
- style="stroke-width:2">
- <path
- sodipodi:type="star"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264584;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="path899"
- sodipodi:sides="4"
- sodipodi:cx="12.700001"
- sodipodi:cy="12.700001"
- sodipodi:r1="14.81729"
- sodipodi:r2="10.477405"
- sodipodi:arg1="0.78539816"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="true"
- inkscape:rounded="0.2"
- inkscape:randomized="0"
- d="m 23.177407,23.177407 c -2.963458,2.963458 -17.9913546,2.963458 -20.9548127,0 -2.96345803,-2.963458 -2.96345808,-17.9913546 0,-20.9548127 2.963458,-2.96345803 17.9913547,-2.96345808 20.9548127,0 2.963458,2.963458 2.963458,17.9913547 0,20.9548127 z" />
- <g
- id="g871"
- style="stroke-width:2">
- <g
- aria-label="#!rsc"
- id="text837">
- <path
- d="M 7.483197,16.645533 V 15.621671 H 6.9371377 l 0.165768,-1.277388 H 5.8255169 l -0.165768,1.277388 h -0.975106 l 0.165768,-1.277388 H 3.5730221 l -0.165768,1.277388 H 2.7051778 v 1.023862 H 3.2707393 L 3.0269628,18.517736 H 2.3443886 v 1.023861 H 2.890448 L 2.7051778,20.935999 H 3.9825666 L 4.1678368,19.541597 H 5.1429427 L 4.9576726,20.935999 H 6.2350614 L 6.4203315,19.541597 H 7.1224078 V 18.517736 H 6.5568464 l 0.2437764,-1.872203 z m -2.2037394,1.872203 h -0.975106 l 0.2437765,-1.872203 h 0.975106 z"
- style="stroke-width:0.529163px"
- id="path851" />
- <path
- d="m 9.6186715,14.178515 h -1.638178 l 0.1950212,4.270964 h 1.2481356 z m -0.819089,5.15831 c -0.487553,0 -0.8775954,0.399794 -0.8775954,0.877596 0,0.487552 0.3900424,0.887346 0.8775954,0.887346 0.497304,0 0.8873464,-0.399794 0.8873464,-0.887346 0,-0.477802 -0.3900424,-0.877596 -0.8873464,-0.877596 z"
- style="stroke-width:0.529163px"
- id="path853" />
- <path
- d="m 13.372827,15.61192 c -0.594815,0 -1.10187,0.429047 -1.335895,1.150625 l -0.136515,-1.004359 h -1.335895 v 5.177813 h 1.540667 v -2.603533 c 0.175519,-0.770334 0.438798,-1.228633 1.072617,-1.228633 0.165768,0 0.302283,0.02925 0.468051,0.06826 l 0.243776,-1.491912 c -0.175519,-0.04875 -0.321785,-0.06826 -0.516806,-0.06826 z"
- style="stroke-width:0.529163px"
- id="path855" />
- <path
- d="m 16.181119,15.592418 c -1.306642,0 -2.11598,0.692326 -2.11598,1.579672 0,0.799587 0.507055,1.326144 1.530916,1.618676 0.936102,0.263278 1.092119,0.37054 1.092119,0.721578 0,0.312034 -0.282781,0.487553 -0.750832,0.487553 -0.507055,0 -0.984857,-0.204772 -1.374899,-0.507055 l -0.750832,0.838591 c 0.507055,0.4583 1.267638,0.770334 2.164736,0.770334 1.287139,0 2.30125,-0.633819 2.30125,-1.706435 0,-0.926351 -0.575313,-1.355398 -1.599174,-1.64793 -0.926351,-0.273029 -1.062866,-0.390042 -1.062866,-0.663072 0,-0.234025 0.204773,-0.390042 0.624068,-0.390042 0.448549,0 0.877595,0.146266 1.277389,0.399793 l 0.565561,-0.867844 C 17.604773,15.836195 16.93195,15.592418 16.181119,15.592418 Z"
- style="stroke-width:0.529163px"
- id="path857" />
- <path
- d="m 21.280919,15.592418 c -1.550418,0 -2.535275,1.150625 -2.535275,2.798554 0,1.638178 0.975106,2.710795 2.564528,2.710795 0.711828,0 1.267638,-0.234026 1.74544,-0.614317 l -0.672823,-0.955604 c -0.37054,0.234026 -0.624068,0.351038 -0.994608,0.351038 -0.614317,0 -1.023861,-0.351038 -1.023861,-1.501663 0,-1.160376 0.380291,-1.608925 1.043363,-1.608925 0.351038,0 0.653321,0.117013 0.984857,0.370541 l 0.663072,-0.9166 c -0.497304,-0.419295 -1.053114,-0.633819 -1.774693,-0.633819 z"
- style="stroke-width:0.529163px"
- id="path859" />
- </g>
- <g
- id="g1542"
- transform="matrix(2,0,0,2,-0.41134438,3.175)"
- style="stroke-width:1">
- <path
- d="M 4.9596016,-1.0195918 C 5.3675734,1.8116029 6.8867822,3.5302649 9.983482,3.6714361 7.0655129,4.7878541 4.0581782,2.1638833 4.9596016,-1.0195918"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path943" />
- <path
- d="m 3.3406657,-0.52095963 c 0.034969,-0.00777 0.038854,0.015542 0.041445,0.041445 C 3.4805417,1.3259222 4.2420891,2.6948942 5.2510098,3.6312866 6.2599306,4.5676787 7.6146558,5.3253406 9.525,5.2916667 5.9477993,6.7163303 2.1879835,3.2932527 3.3393705,-0.52095963"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path945" />
- </g>
- </g>
- </g>
- <text
- xml:space="preserve"
- transform="matrix(0.26458333,0,0,0.26458333,-45.213525,-6.6039366)"
- id="text4811"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:15px;font-family:'Fira Mono', 'Roboto Mono', monospace;-inkscape-font-specification:'Fira Mono, Roboto Mono, monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;white-space:pre;shape-inside:url(#rect4813);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="-248.88142"
- y="0"><tspan
- x="180"
- y="10.85"
- id="tspan2277">[MikroTik] ❌ Netwatch Notify: example.com down
-</tspan><tspan
- x="180"
- y="25.85"
- id="tspan2279">
-</tspan><tspan
- x="180"
- y="40.85"
- id="tspan2281">Host example.com (93.184.216.34) is down since
-</tspan><tspan
- x="180"
- y="55.85"
- id="tspan2283">jun/08/2021 06:55:03.</tspan></text>
- </g>
-</svg>
diff --git a/doc/netwatch-notify.d/notification-02-up.avif b/doc/netwatch-notify.d/notification-02-up.avif
new file mode 100644
index 0000000..9021a93
--- /dev/null
+++ b/doc/netwatch-notify.d/notification-02-up.avif
Binary files differ
diff --git a/doc/netwatch-notify.d/notification-02-up.svg b/doc/netwatch-notify.d/notification-02-up.svg
deleted file mode 100644
index 8e03981..0000000
--- a/doc/netwatch-notify.d/notification-02-up.svg
+++ /dev/null
@@ -1,172 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- width="493.77954"
- height="113.77952"
- viewBox="0 0 130.64584 30.104158"
- version="1.1"
- id="svg8"
- inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
- sodipodi:docname="netwatch-notify-up.svg"
- inkscape:export-filename="logo.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <defs
- id="defs2">
- <rect
- x="180"
- y="0"
- width="658.20044"
- height="397.81946"
- id="rect4813" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.52"
- inkscape:cx="152.96053"
- inkscape:cy="90.789474"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- inkscape:document-rotation="0"
- showgrid="true"
- units="px"
- inkscape:window-width="1920"
- inkscape:window-height="1047"
- inkscape:window-x="0"
- inkscape:window-y="33"
- inkscape:window-maximized="1"
- inkscape:pagecheckerboard="0"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0">
- <inkscape:grid
- type="xygrid"
- id="grid833"
- originx="16.37501"
- originy="11.083327" />
- </sodipodi:namedview>
- <metadata
- id="metadata5">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(16.375001,11.083333)">
- <rect
- style="fill:#e6e6e6;stroke:#6c5d53;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="rect857"
- width="129.64583"
- height="29.10416"
- x="-15.875001"
- y="-10.583333"
- rx="1.6205727" />
- <g
- id="g884"
- transform="matrix(0.5,0,0,0.5,-12.40625,-7.1145834)"
- style="stroke-width:2">
- <path
- sodipodi:type="star"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264584;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="path899"
- sodipodi:sides="4"
- sodipodi:cx="12.700001"
- sodipodi:cy="12.700001"
- sodipodi:r1="14.81729"
- sodipodi:r2="10.477405"
- sodipodi:arg1="0.78539816"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="true"
- inkscape:rounded="0.2"
- inkscape:randomized="0"
- d="m 23.177407,23.177407 c -2.963458,2.963458 -17.9913546,2.963458 -20.9548127,0 -2.96345803,-2.963458 -2.96345808,-17.9913546 0,-20.9548127 2.963458,-2.96345803 17.9913547,-2.96345808 20.9548127,0 2.963458,2.963458 2.963458,17.9913547 0,20.9548127 z" />
- <g
- id="g871"
- style="stroke-width:2">
- <g
- aria-label="#!rsc"
- id="text837">
- <path
- d="M 7.483197,16.645533 V 15.621671 H 6.9371377 l 0.165768,-1.277388 H 5.8255169 l -0.165768,1.277388 h -0.975106 l 0.165768,-1.277388 H 3.5730221 l -0.165768,1.277388 H 2.7051778 v 1.023862 H 3.2707393 L 3.0269628,18.517736 H 2.3443886 v 1.023861 H 2.890448 L 2.7051778,20.935999 H 3.9825666 L 4.1678368,19.541597 H 5.1429427 L 4.9576726,20.935999 H 6.2350614 L 6.4203315,19.541597 H 7.1224078 V 18.517736 H 6.5568464 l 0.2437764,-1.872203 z m -2.2037394,1.872203 h -0.975106 l 0.2437765,-1.872203 h 0.975106 z"
- style="stroke-width:0.529163px"
- id="path851" />
- <path
- d="m 9.6186715,14.178515 h -1.638178 l 0.1950212,4.270964 h 1.2481356 z m -0.819089,5.15831 c -0.487553,0 -0.8775954,0.399794 -0.8775954,0.877596 0,0.487552 0.3900424,0.887346 0.8775954,0.887346 0.497304,0 0.8873464,-0.399794 0.8873464,-0.887346 0,-0.477802 -0.3900424,-0.877596 -0.8873464,-0.877596 z"
- style="stroke-width:0.529163px"
- id="path853" />
- <path
- d="m 13.372827,15.61192 c -0.594815,0 -1.10187,0.429047 -1.335895,1.150625 l -0.136515,-1.004359 h -1.335895 v 5.177813 h 1.540667 v -2.603533 c 0.175519,-0.770334 0.438798,-1.228633 1.072617,-1.228633 0.165768,0 0.302283,0.02925 0.468051,0.06826 l 0.243776,-1.491912 c -0.175519,-0.04875 -0.321785,-0.06826 -0.516806,-0.06826 z"
- style="stroke-width:0.529163px"
- id="path855" />
- <path
- d="m 16.181119,15.592418 c -1.306642,0 -2.11598,0.692326 -2.11598,1.579672 0,0.799587 0.507055,1.326144 1.530916,1.618676 0.936102,0.263278 1.092119,0.37054 1.092119,0.721578 0,0.312034 -0.282781,0.487553 -0.750832,0.487553 -0.507055,0 -0.984857,-0.204772 -1.374899,-0.507055 l -0.750832,0.838591 c 0.507055,0.4583 1.267638,0.770334 2.164736,0.770334 1.287139,0 2.30125,-0.633819 2.30125,-1.706435 0,-0.926351 -0.575313,-1.355398 -1.599174,-1.64793 -0.926351,-0.273029 -1.062866,-0.390042 -1.062866,-0.663072 0,-0.234025 0.204773,-0.390042 0.624068,-0.390042 0.448549,0 0.877595,0.146266 1.277389,0.399793 l 0.565561,-0.867844 C 17.604773,15.836195 16.93195,15.592418 16.181119,15.592418 Z"
- style="stroke-width:0.529163px"
- id="path857" />
- <path
- d="m 21.280919,15.592418 c -1.550418,0 -2.535275,1.150625 -2.535275,2.798554 0,1.638178 0.975106,2.710795 2.564528,2.710795 0.711828,0 1.267638,-0.234026 1.74544,-0.614317 l -0.672823,-0.955604 c -0.37054,0.234026 -0.624068,0.351038 -0.994608,0.351038 -0.614317,0 -1.023861,-0.351038 -1.023861,-1.501663 0,-1.160376 0.380291,-1.608925 1.043363,-1.608925 0.351038,0 0.653321,0.117013 0.984857,0.370541 l 0.663072,-0.9166 c -0.497304,-0.419295 -1.053114,-0.633819 -1.774693,-0.633819 z"
- style="stroke-width:0.529163px"
- id="path859" />
- </g>
- <g
- id="g1542"
- transform="matrix(2,0,0,2,-0.41134438,3.175)"
- style="stroke-width:1">
- <path
- d="M 4.9596016,-1.0195918 C 5.3675734,1.8116029 6.8867822,3.5302649 9.983482,3.6714361 7.0655129,4.7878541 4.0581782,2.1638833 4.9596016,-1.0195918"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path943" />
- <path
- d="m 3.3406657,-0.52095963 c 0.034969,-0.00777 0.038854,0.015542 0.041445,0.041445 C 3.4805417,1.3259222 4.2420891,2.6948942 5.2510098,3.6312866 6.2599306,4.5676787 7.6146558,5.3253406 9.525,5.2916667 5.9477993,6.7163303 2.1879835,3.2932527 3.3393705,-0.52095963"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path945" />
- </g>
- </g>
- </g>
- <text
- xml:space="preserve"
- transform="matrix(0.26458333,0,0,0.26458333,-45.213527,-6.6039376)"
- id="text4811"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:15px;font-family:'Fira Mono', 'Roboto Mono', monospace;-inkscape-font-specification:'Fira Mono, Roboto Mono, monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;white-space:pre;shape-inside:url(#rect4813);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="-248.88142"
- y="0"><tspan
- x="180"
- y="10.85"
- id="tspan2242">[MikroTik] ✅ Netwatch Notify: example.com up
-</tspan><tspan
- x="180"
- y="25.85"
- id="tspan2244">
-</tspan><tspan
- x="180"
- y="40.85"
- id="tspan2246">Host example.com (93.184.216.34) is up since
-</tspan><tspan
- x="180"
- y="55.85"
- id="tspan2248">jun/08/2021 07:01:00.
-</tspan><tspan
- x="180"
- y="70.85"
- id="tspan2250">It was down for 6 checks since jun/08/2021 06:55:03.</tspan></text>
- </g>
-</svg>
diff --git a/doc/netwatch-notify.md b/doc/netwatch-notify.md
index 85bfb73..2db32bb 100644
--- a/doc/netwatch-notify.md
+++ b/doc/netwatch-notify.md
@@ -1,7 +1,14 @@
Notify on host up and down
==========================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -17,8 +24,8 @@ optional parent host is not down to avoid false alerts.
### Sample notifications
-![netwatch-notify notification down](netwatch-notify.d/notification-01-down.svg)
-![netwatch-notify notification up](netwatch-notify.d/notification-02-up.svg)
+![netwatch-notify notification down](netwatch-notify.d/notification-01-down.avif)
+![netwatch-notify notification up](netwatch-notify.d/notification-02-up.avif)
Requirements and installation
-----------------------------
@@ -36,7 +43,13 @@ Configuration
The hosts to be checked have to be added to netwatch with specific comment:
- /tool/netwatch/add comment="notify, hostname=example.com" host=[ :resolve "example.com" ];
+ /tool/netwatch/add comment="notify, name=example.com" host=[ :resolve "example.com" ];
+
+Also notification settings are required for
+[e-mail](mod/notification-email.md),
+[matrix](mod/notification-matrix.md),
+[ntfy](mod/notification-ntfy.md) and/or
+[telegram](mod/notification-telegram.md).
### Hooks
@@ -44,25 +57,28 @@ It is possible to run an up hook command (`up-hook`) or down hook command
(`down-hook`) when a notification is triggered. This has to be added in
comment, note that some characters need extra escaping:
- /tool/netwatch/add comment=("notify, hostname=device, down-hook=/interface/ethernet \\{ disable \\\"en2\\\"; enable \\\"en2\\\"; \\}") host=10.0.0.20;
+ /tool/netwatch/add comment=("notify, name=device, down-hook=/interface/ethernet \\{ disable \\\"en2\\\"; enable \\\"en2\\\"; \\}") host=10.0.0.20;
Also there is a `pre-down-hook` that fires at two thirds of failed checks
required for the notification. The idea is to fix the issue before a
notification is sent.
+Getting the escaping right may be troublesome. Please consider adding a
+script in `/system/script`, then running that from hook.
+
### Count threshould
The count threshould (default is 5 checks) is configurable as well:
- /tool/netwatch/add comment="notify, hostname=example.com, count=10" host=104.18.144.11;
+ /tool/netwatch/add comment="notify, name=example.com, count=10" host=104.18.144.11;
### Parents & dependencies
If the host is behind another checked host add a dependency, this will
suppress notification if the parent host is down:
- /tool/netwatch/add comment="notify, hostname=gateway" host=93.184.216.1;
- /tool/netwatch/add comment="notify, hostname=example.com, parent=gateway" host=93.184.216.34;
+ /tool/netwatch/add comment="notify, name=gateway" host=93.184.216.1;
+ /tool/netwatch/add comment="notify, name=example.com, parent=gateway" host=93.184.216.34;
Note that every configured parent in a chain increases the check count
threshould by one.
@@ -72,11 +88,11 @@ threshould by one.
The host address can be updated dynamically. Give extra parameter `resolve`
with a resolvable name:
- /tool/netwatch/add comment="notify, hostname=example.com, resolve=example.com";
+ /tool/netwatch/add comment="notify, name=example.com, resolve=example.com";
-But be warned: Dynamic updates will probably cause issues if the name has
-more than one record in dns - a high rate of configuration changes (and flash
-writes) at least.
+This supports multiple A or AAAA records for a name just fine, even a CNAME
+to those. An update happens only if no more record with the configured host
+address is found.
### No notification on host down
@@ -84,13 +100,32 @@ Also suppressing the notification on host down is possible with parameter
`no-down-notification`. This may be desired for devices that are usually
powered off, but accessibility is of interest.
- /tool/netwatch/add comment="notify, hostname=printer, no-down-notification" host=10.0.0.30;
+ /tool/netwatch/add comment="notify, name=printer, no-down-notification" host=10.0.0.30;
Go and get your coffee ☕️ before sending the print job.
-Also notification settings are required for e-mail,
-[matrix](mod/notification-matrix.md) and/or
-[telegram](mod/notification-telegram.md).
+### No log on failed resolve
+
+A message is writting to log after three failed attemts to resolve a host.
+However this can cause some noise for hosts that are expected to have
+failures, for example when the name is dynamically added by
+[`dhcp-to-dns`](dhcp-to-dns.md). This can be suppressed:
+
+ /tool/netwatch/add comment="notify, name=client, resolve=client.dhcp.example.com, no-resolve-fail" host=10.0.0.0;
+
+### Add a note in notification
+
+For some extra information it is possible to add a text note. This is
+included verbatim into the notification.
+
+ /tool/netwatch/add comment="notify, name=example, note=Do not touch!" host=10.0.0.31;
+
+### Add a link in notification
+
+It is possible to add a link in notification, that is added below the
+formatted notification text.
+
+ /tool/netwatch/add comment="notify, name=example.com, resolve=example.com, link=https://example.com/";
Tips & Tricks
-------------
@@ -99,10 +134,10 @@ Tips & Tricks
Sometimes it is sufficient if one of a number of hosts is available. You can
make `netwatch-notify` check for that by adding several items with same
-`hostname`. Note that `count` has to be multiplied to keep the actual time.
+`name`. Note that `count` has to be multiplied to keep the actual time.
- /tool/netwatch/add comment="notify, hostname=service, count=10" host=10.0.0.10;
- /tool/netwatch/add comment="notify, hostname=service, count=10" host=10.0.0.20;
+ /tool/netwatch/add comment="notify, name=service, count=10" host=10.0.0.10;
+ /tool/netwatch/add comment="notify, name=service, count=10" host=10.0.0.20;
### Checking internet connectivity
@@ -112,11 +147,11 @@ check `1.1.1.1` (Cloudflare DNS), `9.9.9.9` (Quad-nine DNS), `8.8.8.8`
(Google DNS) or any other reliable address that indicates internet
connectivity.
- /tool/netwatch/add comment="notify, hostname=internet" host=1.1.1.1;
+ /tool/netwatch/add comment="notify, name=internet" host=1.1.1.1;
A target like this suits well to be parent for other checks.
- /tool/netwatch/add comment="notify, hostname=example.com, parent=internet" host=93.184.216.34;
+ /tool/netwatch/add comment="notify, name=example.com, parent=internet" host=93.184.216.34;
### Checking specific ISP
@@ -130,7 +165,7 @@ Create a route and firewall mangle rule.
Finally monitor the address with `netwatch-notify`.
- /tool/netwatch/add comment="notify, hostname=quad-one via isp1" host=1.0.0.1;
+ /tool/netwatch/add comment="notify, name=quad-one via isp1" host=1.0.0.1;
Note that *all* traffic to the given address is routed that way. In case of
link failure this address is not available, so use something reliable but
@@ -142,7 +177,7 @@ non-essential. In this example the address `1.0.0.1` is used, the same service
Netwatch entries can be created to work with both - this script and
[netwatch-dns](netwatch-dns.md). Just give options for both:
- /tool/netwatch/add comment="doh, notify, hostname=cloudflare-dns" host=1.1.1.1;
+ /tool/netwatch/add comment="doh, notify, name=cloudflare-dns" host=1.1.1.1;
See also
--------
@@ -150,5 +185,5 @@ See also
* [Manage DNS and DoH servers from netwatch](netwatch-dns.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/netwatch-syslog.md b/doc/netwatch-syslog.md
index 760d98f..6a337d4 100644
--- a/doc/netwatch-syslog.md
+++ b/doc/netwatch-syslog.md
@@ -1,34 +1,5 @@
-Manage remote logging
-=====================
+This script has been dropped. Filtering in firewall is advised, which should
+look something like this:
-[◀ Go back to main README](../README.md)
-
-Description
------------
-
-RouterOS supports sending log messages via network to a remote syslog server.
-If the server is not available no log messages (with potentially sensitive
-information) should be sent. This script disables remote logging by
-availability.
-
-Requirements and installation
------------------------------
-
-Let's assume there is a remote log action and associated logging rule:
-
- /system/logging/action/set remote=10.0.0.1 [ find where name="remote" ];
- /system/logging/add action=remote topics=info;
-
-Just install the script:
-
- $ScriptInstallUpdate netwatch-syslog;
-
-... and create a netwatch matching the IP address from logging action above:
-
- /tool/netwatch/add down-script=netwatch-syslog host=10.0.0.1 up-script=netwatch-syslog;
-
-All logging rules are disabled when host is down.
-
----
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+ /ip/firewall/filter/add action=reject chain=output out-interface-list=WAN port=514 protocol=udp reject-with=icmp-admin-prohibited;
+ /ip/firewall/filter/add action=reject chain=forward out-interface-list=WAN port=514 protocol=udp reject-with=icmp-admin-prohibited;
diff --git a/doc/ospf-to-leds.md b/doc/ospf-to-leds.md
index 5ab5c75..121f77b 100644
--- a/doc/ospf-to-leds.md
+++ b/doc/ospf-to-leds.md
@@ -1,7 +1,14 @@
Visualize OSPF state via LEDs
=============================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -33,5 +40,5 @@ instance `default` via LED `user-led` set this:
/routing/ospf/instance/set default comment="ospf-to-leds, leds=user-led";
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/packages-update.md b/doc/packages-update.md
index 57f02d9..fae3896 100644
--- a/doc/packages-update.md
+++ b/doc/packages-update.md
@@ -1,7 +1,14 @@
Manage system update
====================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -16,8 +23,12 @@ verification.
But it provides some extra functionality:
+* upload backup to Mikrotik cloud if [backup-cloud](backup-cloud.md) is
+ installed
* send backup via e-mail if [backup-email](backup-email.md) is installed
-* upload backup if [backup-upload](backup-upload.md) is installed
+* save configuration to fallback partition if
+ [backup-partition](backup-partition.md) is installed
+* upload backup to server if [backup-upload](backup-upload.md) is installed
* schedule reboot at night
Requirements and installation
@@ -30,6 +41,21 @@ Just install the script:
It is automatically run by [check-routeros-update](check-routeros-update.md)
if available.
+Configuration
+-------------
+
+The configuration goes to `global-config-overlay`, this is the only parameter:
+
+* `PackagesUpdateDeferReboot`: defer the reboot for night (between 3 AM
+ and 5 AM)
+
+By modifying the scheduler's `start-time` you can force the reboot at
+different time.
+
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
+
Usage and invocation
--------------------
@@ -40,13 +66,13 @@ Alternatively run it manually:
See also
--------
-* [Notify on RouterOS update](check-routeros-update.md)
* [Upload backup to Mikrotik cloud](backup-cloud.md)
* [Send backup via e-mail](backup-email.md)
-* [Save configuration to fallback partition](doc/backup-partition.md)
+* [Save configuration to fallback partition](backup-partition.md)
* [Upload backup to server](backup-upload.md)
+* [Notify on RouterOS update](check-routeros-update.md)
* [Automatically upgrade firmware and reboot](firmware-upgrade-reboot.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/ppp-on-up.md b/doc/ppp-on-up.md
index 7545c5e..21847c7 100644
--- a/doc/ppp-on-up.md
+++ b/doc/ppp-on-up.md
@@ -1,7 +1,14 @@
Run scripts on ppp connection
=============================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -33,5 +40,5 @@ See also
* [Update tunnelbroker configuration](update-tunnelbroker.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/rotate-ntp.md b/doc/rotate-ntp.md
index f548eba..9a016a3 100644
--- a/doc/rotate-ntp.md
+++ b/doc/rotate-ntp.md
@@ -1,43 +1,3 @@
-Rotate NTP servers
-==================
-
-[◀ Go back to main README](../README.md)
-
-> ℹ️ **Info**: This script can not be used on its own but requires the base
-> installation. See [main README](../README.md) for details.
-
-Description
------------
-
-RouterOS requires NTP servers to be configured by IP address. Servers from a
-pool may appear and disappear, leaving broken NTP configuration.
-
-This script allows to rotate IP addresses from a given pool.
-
-Requirements and installation
------------------------------
-
-Just install the script:
-
- $ScriptInstallUpdate rotate-ntp;
-
-Configuration
--------------
-
-The configuration goes to `global-config-overlay`, this is the parameter:
-
-* `NtpPool`: dns name of ntp server pool
-
-Usage and invocation
---------------------
-
-Just run the script to update the NTP configuration with actual IP
-addresses from pool if required.
-
-Alternatively a scheduler can be created:
-
- /system/scheduler/add interval=5d name=rotate-ntp on-event="/system/script/run rotate-ntp;" start-time=startup;
-
----
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+This script has been dropped as the limitation does no longer exist with
+RouterOS 7.x, where you can enable a ntp server and use a name for the client
+at the same time.
diff --git a/doc/sms-action.md b/doc/sms-action.md
index d2e3252..b4678af 100644
--- a/doc/sms-action.md
+++ b/doc/sms-action.md
@@ -1,7 +1,14 @@
Act on received SMS
===================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -28,6 +35,10 @@ The configuration goes to `global-config-overlay`, this is the only parameter:
* `SmsAction`: an array with pre-defined actions
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
+
Then enable SMS actions:
/tool/sms/set allowed-number=+491234567890 receive-enabled=yes secret=s3cr3t;
@@ -48,5 +59,5 @@ See also
* [Forward received SMS](sms-forward.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/sms-forward.d/notification.avif b/doc/sms-forward.d/notification.avif
new file mode 100644
index 0000000..01eb7ba
--- /dev/null
+++ b/doc/sms-forward.d/notification.avif
Binary files differ
diff --git a/doc/sms-forward.d/notification.svg b/doc/sms-forward.d/notification.svg
deleted file mode 100644
index 298b43e..0000000
--- a/doc/sms-forward.d/notification.svg
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- width="443.77951"
- height="123.77951"
- viewBox="0 0 117.41666 32.749989"
- version="1.1"
- id="svg8"
- inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
- sodipodi:docname="sms-forward.svg"
- inkscape:export-filename="logo.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <defs
- id="defs2">
- <rect
- x="180"
- y="0"
- width="658.20044"
- height="397.81946"
- id="rect4813" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.52"
- inkscape:cx="254.27632"
- inkscape:cy="90.789474"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- inkscape:document-rotation="0"
- showgrid="true"
- units="px"
- inkscape:window-width="1920"
- inkscape:window-height="1047"
- inkscape:window-x="0"
- inkscape:window-y="33"
- inkscape:window-maximized="1"
- inkscape:pagecheckerboard="0"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0">
- <inkscape:grid
- type="xygrid"
- id="grid833"
- originx="16.375005"
- originy="11.083326" />
- </sodipodi:namedview>
- <metadata
- id="metadata5">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(16.374999,11.083331)">
- <rect
- style="fill:#e6e6e6;stroke:#6c5d53;stroke-width:0.999996;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="rect857"
- width="116.41666"
- height="31.749996"
- x="-15.875001"
- y="-10.583333"
- rx="1.4552082" />
- <g
- id="g884"
- transform="matrix(0.5,0,0,0.5,-12.40625,-7.1145834)"
- style="stroke-width:2">
- <path
- sodipodi:type="star"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264584;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- id="path899"
- sodipodi:sides="4"
- sodipodi:cx="12.700001"
- sodipodi:cy="12.700001"
- sodipodi:r1="14.81729"
- sodipodi:r2="10.477405"
- sodipodi:arg1="0.78539816"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="true"
- inkscape:rounded="0.2"
- inkscape:randomized="0"
- d="m 23.177407,23.177407 c -2.963458,2.963458 -17.9913546,2.963458 -20.9548127,0 -2.96345803,-2.963458 -2.96345808,-17.9913546 0,-20.9548127 2.963458,-2.96345803 17.9913547,-2.96345808 20.9548127,0 2.963458,2.963458 2.963458,17.9913547 0,20.9548127 z" />
- <g
- id="g871"
- style="stroke-width:2">
- <g
- aria-label="#!rsc"
- id="text837">
- <path
- d="M 7.483197,16.645533 V 15.621671 H 6.9371377 l 0.165768,-1.277388 H 5.8255169 l -0.165768,1.277388 h -0.975106 l 0.165768,-1.277388 H 3.5730221 l -0.165768,1.277388 H 2.7051778 v 1.023862 H 3.2707393 L 3.0269628,18.517736 H 2.3443886 v 1.023861 H 2.890448 L 2.7051778,20.935999 H 3.9825666 L 4.1678368,19.541597 H 5.1429427 L 4.9576726,20.935999 H 6.2350614 L 6.4203315,19.541597 H 7.1224078 V 18.517736 H 6.5568464 l 0.2437764,-1.872203 z m -2.2037394,1.872203 h -0.975106 l 0.2437765,-1.872203 h 0.975106 z"
- style="stroke-width:0.529163px"
- id="path851" />
- <path
- d="m 9.6186715,14.178515 h -1.638178 l 0.1950212,4.270964 h 1.2481356 z m -0.819089,5.15831 c -0.487553,0 -0.8775954,0.399794 -0.8775954,0.877596 0,0.487552 0.3900424,0.887346 0.8775954,0.887346 0.497304,0 0.8873464,-0.399794 0.8873464,-0.887346 0,-0.477802 -0.3900424,-0.877596 -0.8873464,-0.877596 z"
- style="stroke-width:0.529163px"
- id="path853" />
- <path
- d="m 13.372827,15.61192 c -0.594815,0 -1.10187,0.429047 -1.335895,1.150625 l -0.136515,-1.004359 h -1.335895 v 5.177813 h 1.540667 v -2.603533 c 0.175519,-0.770334 0.438798,-1.228633 1.072617,-1.228633 0.165768,0 0.302283,0.02925 0.468051,0.06826 l 0.243776,-1.491912 c -0.175519,-0.04875 -0.321785,-0.06826 -0.516806,-0.06826 z"
- style="stroke-width:0.529163px"
- id="path855" />
- <path
- d="m 16.181119,15.592418 c -1.306642,0 -2.11598,0.692326 -2.11598,1.579672 0,0.799587 0.507055,1.326144 1.530916,1.618676 0.936102,0.263278 1.092119,0.37054 1.092119,0.721578 0,0.312034 -0.282781,0.487553 -0.750832,0.487553 -0.507055,0 -0.984857,-0.204772 -1.374899,-0.507055 l -0.750832,0.838591 c 0.507055,0.4583 1.267638,0.770334 2.164736,0.770334 1.287139,0 2.30125,-0.633819 2.30125,-1.706435 0,-0.926351 -0.575313,-1.355398 -1.599174,-1.64793 -0.926351,-0.273029 -1.062866,-0.390042 -1.062866,-0.663072 0,-0.234025 0.204773,-0.390042 0.624068,-0.390042 0.448549,0 0.877595,0.146266 1.277389,0.399793 l 0.565561,-0.867844 C 17.604773,15.836195 16.93195,15.592418 16.181119,15.592418 Z"
- style="stroke-width:0.529163px"
- id="path857" />
- <path
- d="m 21.280919,15.592418 c -1.550418,0 -2.535275,1.150625 -2.535275,2.798554 0,1.638178 0.975106,2.710795 2.564528,2.710795 0.711828,0 1.267638,-0.234026 1.74544,-0.614317 l -0.672823,-0.955604 c -0.37054,0.234026 -0.624068,0.351038 -0.994608,0.351038 -0.614317,0 -1.023861,-0.351038 -1.023861,-1.501663 0,-1.160376 0.380291,-1.608925 1.043363,-1.608925 0.351038,0 0.653321,0.117013 0.984857,0.370541 l 0.663072,-0.9166 c -0.497304,-0.419295 -1.053114,-0.633819 -1.774693,-0.633819 z"
- style="stroke-width:0.529163px"
- id="path859" />
- </g>
- <g
- id="g1542"
- transform="matrix(2,0,0,2,-0.41134438,3.175)"
- style="stroke-width:1">
- <path
- d="M 4.9596016,-1.0195918 C 5.3675734,1.8116029 6.8867822,3.5302649 9.983482,3.6714361 7.0655129,4.7878541 4.0581782,2.1638833 4.9596016,-1.0195918"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path943" />
- <path
- d="m 3.3406657,-0.52095963 c 0.034969,-0.00777 0.038854,0.015542 0.041445,0.041445 C 3.4805417,1.3259222 4.2420891,2.6948942 5.2510098,3.6312866 6.2599306,4.5676787 7.6146558,5.3253406 9.525,5.2916667 5.9477993,6.7163303 2.1879835,3.2932527 3.3393705,-0.52095963"
- style="fill:#676867;fill-rule:evenodd;stroke-width:0.264582"
- id="path945" />
- </g>
- </g>
- </g>
- <text
- xml:space="preserve"
- transform="matrix(0.26458333,0,0,0.26458333,-44.965875,-6.6039357)"
- id="text4811"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:15px;font-family:'Fira Mono', 'Roboto Mono', monospace;-inkscape-font-specification:'Fira Mono, Roboto Mono, monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;white-space:pre;shape-inside:url(#rect4813);fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="-248.88142"
- y="0"><tspan
- x="180"
- y="10.85"
- id="tspan2204">[MikroTik] 📨 SMS Forwarding from 7277
-</tspan><tspan
- x="180"
- y="25.85"
- id="tspan2206">
-</tspan><tspan
- x="180"
- y="40.85"
- id="tspan2208">Received this message by MikroTik from 7277:
-</tspan><tspan
- x="180"
- y="55.85"
- id="tspan2210">
-</tspan><tspan
- x="180"
- y="70.85"
- id="tspan2212">On Jun/12/2021 13:44:10 GMT -0 type class-0:
-</tspan><tspan
- x="180"
- y="85.85"
- id="tspan2214">Welcome to our network!</tspan></text>
- </g>
-</svg>
diff --git a/doc/sms-forward.md b/doc/sms-forward.md
index 80cb7ad..597410b 100644
--- a/doc/sms-forward.md
+++ b/doc/sms-forward.md
@@ -1,7 +1,14 @@
Forward received SMS
====================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -15,7 +22,7 @@ A broadband interface with SMS support is required.
### Sample notification
-![sms-forward notification](sms-forward.d/notification.svg)
+![sms-forward notification](sms-forward.d/notification.avif)
Requirements and installation
-----------------------------
@@ -31,18 +38,61 @@ Just install the script:
Configuration
-------------
-Notification settings are required for e-mail,
-[matrix](mod/notification-matrix.md) and/or
-[telegram](mod/notification-telegram.md). Also you have to enable receiving
-of SMS:
+You have to enable receiving of SMS:
/tool/sms/set receive-enabled=yes;
+The configuration goes to `global-config-overlay`, this is the only parameter:
+
+* `SmsForwardHooks`: an array with pre-defined hooks, where each hook consists
+ of `match` (which is matched against the received message), `allowed-number`
+ (which is matched against the sending phone number or name) and `command`.
+ For `match` and `allowed-number` regular expressions are supported. Actual
+ phone number (`$Phone`) and message (`$Message`) are available for the hook.
+
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
+
+Notification settings are required for
+[e-mail](mod/notification-email.md),
+[matrix](mod/notification-matrix.md),
+[ntfy](mod/notification-ntfy.md) and/or
+[telegram](mod/notification-telegram.md).
+
+Tips & Tricks
+-------------
+
+### Take care of harmful commands!
+
+It is easy to fake the sending phone number! So make sure you do not rely on
+that number for potentially harmful commands. Add a shared secret to match
+into the text instead, for example: `reboot-53cr3t-5tr1n9` instead of just
+`reboot`.
+
+### Order new volume
+
+Most broadband providers include a volume limit for their data plans. The
+hook functionality can be used to order new volume automatically.
+
+Let's assume an imaginary provider **ABC** sends a message when the available
+volume is about to deplete. The message is sent from `ABC` and the text
+contains the string `80%`. New volume can be ordered by sending a SMS back to
+the phone number `1234` with the text `data-plan`.
+
+ :global SmsForwardHooks {
+ { match="80%";
+ allowed-number="ABC";
+ command="/tool/sms/send lte1 phone-number=1234 message=\"data-plan\";" };
+ };
+
+Adjust the values to your own needs.
+
See also
--------
* [Act on received SMS](sms-action.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/ssh-keys-import.md b/doc/ssh-keys-import.md
index d83311f..d1325aa 100644
--- a/doc/ssh-keys-import.md
+++ b/doc/ssh-keys-import.md
@@ -1,33 +1,2 @@
-Import SSH keys
-===============
-
-[◀ Go back to main README](../README.md)
-
-Description
------------
-
-This script imports public SSH keys (files with extension "`pub`") into
-local store for user authentication.
-
-Requirements and installation
------------------------------
-
-Just install the script:
-
- $ScriptInstallUpdate ssh-keys-import;
-
-Usage and invocation
---------------------
-
-Copy files with extension "`pub`" containing public SSH keys for your device.
-Then run the script:
-
- /system/script/run ssh-keys-import;
-
-Starting with an `authorized_keys` file you can split it on a shell:
-
- grep -E '^ssh-rsa' authorized_keys | nl -nrz | while read num type key name; do echo $type $key $name > $num-$name.pub; done
-
----
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+This script has been replaced by a module. Please see
+[Import ssh keys for public key authentication](mod/ssh-keys-import.md).
diff --git a/doc/super-mario-theme.md b/doc/super-mario-theme.md
index 8142cda..e4bae2e 100644
--- a/doc/super-mario-theme.md
+++ b/doc/super-mario-theme.md
@@ -1,7 +1,14 @@
Play Super Mario theme
======================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
Description
-----------
@@ -27,5 +34,5 @@ Just run the script to play:
For extra fun use it for dhcp lease script. :)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/telegram-chat.d/01-chat-specific.avif b/doc/telegram-chat.d/01-chat-specific.avif
new file mode 100644
index 0000000..ab75f78
--- /dev/null
+++ b/doc/telegram-chat.d/01-chat-specific.avif
Binary files differ
diff --git a/doc/telegram-chat.d/02-chat-all.avif b/doc/telegram-chat.d/02-chat-all.avif
new file mode 100644
index 0000000..ed1a389
--- /dev/null
+++ b/doc/telegram-chat.d/02-chat-all.avif
Binary files differ
diff --git a/doc/telegram-chat.d/03-reply.avif b/doc/telegram-chat.d/03-reply.avif
new file mode 100644
index 0000000..515853e
--- /dev/null
+++ b/doc/telegram-chat.d/03-reply.avif
Binary files differ
diff --git a/doc/telegram-chat.md b/doc/telegram-chat.md
new file mode 100644
index 0000000..eb4acf5
--- /dev/null
+++ b/doc/telegram-chat.md
@@ -0,0 +1,152 @@
+Chat with your router and send commands via Telegram bot
+========================================================
+
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
+
+> ℹ️ **Info**: This script can not be used on its own but requires the base
+> installation. See [main README](../README.md) for details.
+
+Description
+-----------
+
+This script makes your device poll a Telegram bot for new messages. With
+these messages you can send commands to your device and make it run them.
+The resulting output is send back to you.
+
+Requirements and installation
+-----------------------------
+
+Just install the script and the module for notifications via Telegram:
+
+ $ScriptInstallUpdate telegram-chat,mod/notification-telegram;
+
+Then create a schedule that runs the script periodically:
+
+ /system/scheduler/add start-time=startup interval=30s name=telegram-chat on-event="/system/script/run telegram-chat;";
+
+> ⚠️ **Warning**: Make sure to keep the interval in sync when installing
+> on several devices. Differing polling intervals will result in missed
+> messages.
+
+Configuration
+-------------
+
+Make sure to configure
+[notifications via telegram](mod/notification-telegram.md) first. The
+additional configuration goes to `global-config-overlay`, these are the
+parameters:
+
+* `TelegramChatIdsTrusted`: an array with trusted chat ids or user names
+* `TelegramChatGroups`: define the groups a device should belong to
+
+> ℹ️ **Info**: Copy relevant configuration from
+> [`global-config`](../global-config.rsc) (the one without `-overlay`) to
+> your local `global-config-overlay` and modify it to your specific needs.
+
+Usage and invocation
+--------------------
+
+### Activating device(s)
+
+This script is capable of chatting with multiple devices. By default a
+device is passive and not acting on messages. To activate it send a message
+containing `! identity` (exclamation mark, optional space and system's
+identity). To query all dynamic ip addresses form a device named "*MikroTik*"
+send `! MikroTik`, followed by `/ip/address/print where dynamic;`.
+
+![chat to specific device](telegram-chat.d/01-chat-specific.avif)
+
+Devices can be grouped to chat with them simultaneously. The default group
+"*all*" can be activated by sending `! @all`, which will make all devices
+act on your commands.
+
+![chat to all devices](telegram-chat.d/02-chat-all.avif)
+
+Send a single exclamation mark or non-existent identity to make all
+devices passive again.
+
+### Reply to message
+
+Let's assume you received a message from a device before, and want to send
+a command to that device. No need to activate it, you can just reply to
+that message.
+
+![reply to message](telegram-chat.d/03-reply.avif)
+
+Associated messages are cleared on device reboot.
+
+### Ask for devices
+
+Send a message with a single question mark (`?`) to query for devices
+currenty online. The answer can be used for command via reply then.
+
+Known limitations
+-----------------
+
+### Do not use numeric ids!
+
+Numeric ids are valid within a session only. Usually you can use something
+like this to print all ip addresses and remove the first one:
+
+ /ip/address/print;
+ /ip/address/remove 0;
+
+This will fail when sent in separate messages. Instead you should use basic
+scripting capabilities. Try to print what you want to act on...
+
+ /ip/address/print where interface=eth;
+
+... verify and finally remove it.
+
+ /ip/address/remove [ find where interface=eth ];
+
+What does work is using the persistent ids:
+
+ /ip/address/print show-ids;
+
+The output contains an id starting with asterisk that can be used:
+
+ /ip/address/remove *E;
+
+### Mind command runtime
+
+The command is run in background while the script waits for it - about
+20 seconds at maximum. A command exceeding that time continues to run in
+background, but the output in the message is missing or truncated then.
+
+If you still want a response you can work around this by making your code
+send information on its own. Something like this should do the job:
+
+ :global SendTelegram;
+ :delay 30s;
+ $SendTelegram "Command finished" "Your command finished...";
+
+### Output size
+
+Telegram messages have a limit of 4096 characters. If output is too large it
+is truncated, and a warning is added to the message.
+
+### Sending commands to a group
+
+Adding a bot to a group allows it to send messages to that group. To allow
+it to receive messages you have to make it an admin of that group! It is
+fine to deny all permissions, though.
+
+Also adding an admin to a group can cause the group id to change, so check
+that if notifications break suddenly.
+
+See also
+--------
+
+* [Send notifications via Telegram](mod/notification-telegram.md)
+
+---
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/unattended-lte-firmware-upgrade.md b/doc/unattended-lte-firmware-upgrade.md
index 63f2793..6680447 100644
--- a/doc/unattended-lte-firmware-upgrade.md
+++ b/doc/unattended-lte-firmware-upgrade.md
@@ -1,7 +1,14 @@
Install LTE firmware upgrade
============================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
Description
-----------
@@ -12,6 +19,7 @@ This script upgrades LTE firmware on compatible devices:
* R11e-LTE-US
* R11e-4G
* R11e-LTE6
+* ... and more - probably what ever Mikrotik builds into their devices
A temporary scheduler is created to be independent from terminal. Thus
starting the upgrade process over the broadband connection is supported.
@@ -42,5 +50,5 @@ See also
* [Notify on LTE firmware upgrade](check-lte-firmware-upgrade.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/update-gre-address.md b/doc/update-gre-address.md
index 7e87743..80902b9 100644
--- a/doc/update-gre-address.md
+++ b/doc/update-gre-address.md
@@ -1,7 +1,14 @@
Update GRE configuration with dynamic addresses
===============================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -37,5 +44,5 @@ certificate CN into the comment:
/interface/gre/set comment="ikev2-client1" gre-client1;
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)
diff --git a/doc/update-tunnelbroker.md b/doc/update-tunnelbroker.md
index bfe8e25..2539e2f 100644
--- a/doc/update-tunnelbroker.md
+++ b/doc/update-tunnelbroker.md
@@ -1,7 +1,14 @@
Update tunnelbroker configuration
=================================
-[◀ Go back to main README](../README.md)
+[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers)
+[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network)
+[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers)
+[![required RouterOS version](https://img.shields.io/badge/RouterOS-7.13-yellow?style=flat)](https://mikrotik.com/download/changelogs/)
+[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts)
+[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)
+
+[⬅️ Go back to main README](../README.md)
> ℹ️ **Info**: This script can not be used on its own but requires the base
> installation. See [main README](../README.md) for details.
@@ -28,11 +35,10 @@ Configuration
The configuration goes to interface's comment:
- /interface/6to4/set comment="tunnelbroker, user=user, pass=s3cr3t, id=12345" tunnelbroker;
-
-Also enabling dynamic DNS in Mikrotik cloud is required:
+ /interface/6to4/set comment="tunnelbroker, user=user, id=12345, pass=s3cr3t" tunnelbroker;
- /ip/cloud/set ddns-enabled=yes;
+You should know you user name from login. The `id` is the tunnel's numeric
+id, `pass` is the *update key* found on the tunnel's advanced tab.
See also
--------
@@ -40,5 +46,5 @@ See also
* [Run scripts on ppp connection](ppp-on-up.md)
---
-[◀ Go back to main README](../README.md)
-[▲ Go back to top](#top)
+[⬅️ Go back to main README](../README.md)
+[⬆️ Go back to top](#top)