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.md38
-rw-r--r--doc/backup-email.md28
-rw-r--r--doc/backup-partition.md41
-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.md29
-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.md58
-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-state-fail.avifbin0 -> 3474 bytes
-rw-r--r--doc/check-health.d/notification-09-state-ok.avifbin0 -> 3531 bytes
-rw-r--r--doc/check-health.md94
-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.md22
-rw-r--r--doc/check-perpetual-license.d/notification.avifbin0 -> 4004 bytes
-rw-r--r--doc/check-perpetual-license.md71
-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.md59
-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.md35
-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.md61
-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.md140
-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.md32
-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.md71
-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.md89
-rw-r--r--doc/mod/notification-gotify.d/appsetup.avifbin0 -> 18099 bytes
-rw-r--r--doc/mod/notification-gotify.md97
-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.md124
-rw-r--r--doc/mod/notification-ntfy.md99
-rw-r--r--doc/mod/notification-telegram.d/getchatid.avifbin0 -> 3896 bytes
-rw-r--r--doc/mod/notification-telegram.d/setuserpic.avifbin0 -> 38522 bytes
-rw-r--r--doc/mod/notification-telegram.md87
-rw-r--r--doc/mod/scriptrunonce.md21
-rw-r--r--doc/mod/ssh-keys-import.md69
-rw-r--r--doc/mode-button.md19
-rw-r--r--doc/netwatch-dns.md50
-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.md97
-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.md67
-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
103 files changed, 1971 insertions, 3470 deletions
diff --git a/doc/accesslist-duplicates.md b/doc/accesslist-duplicates.md
index 50720b1..e4d0c7f 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.15-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..7d55d74 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.15-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,16 +17,16 @@ Description
-----------
This script uploads
-[binary backup to Mikrotik cloud](https://wiki.mikrotik.com/wiki/Manual:IP/Cloud#Backup).
+[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,15 @@ 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),
+[gotify](mod/notification-gotify.md),
+[matrix](mod/notification-matrix.md),
+[ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md).
Usage and invocation
@@ -55,9 +69,9 @@ See also
--------
* [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)
---
-[◀ 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..7b8bcfe 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.15-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
--------------------
@@ -46,9 +59,10 @@ See also
--------
* [Upload backup to Mikrotik cloud](backup-cloud.md)
-* [Save configuration to fallback partition](doc/backup-partition.md)
+* [Save configuration to fallback partition](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..50b8a09 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.15-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,11 +17,21 @@ Description
-----------
This script saves the current configuration to fallback
-[partition](https://wiki.mikrotik.com/wiki/Manual:Partitions).
+[partition ↗️](https://wiki.mikrotik.com/wiki/Manual:Partitions).
+It can also copy-over the RouterOS installation when run interactively
+or just before a feature update.
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**: By default only the configuration is saved to backup
+> partition. Every now and then you should copy your installation over
+> for a recent RouterOS version! See below for options.
+
Requirements and installation
-----------------------------
@@ -22,6 +39,18 @@ Just install the script:
$ScriptInstallUpdate backup-partition;
+Configuration
+-------------
+
+The configuration goes to `global-config-overlay`, the only parameter is:
+
+* `BackupPartitionCopyBeforeFeatureUpdate`: copy-over the RouterOS
+ installation when a feature update is pending
+
+> ℹ️ **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
--------------------
@@ -29,6 +58,9 @@ Just run the script:
/system/script/run backup-partition;
+When run interactively from terminal it supports to copy-over the RouterOS
+installation when versions differ.
+
Creating a scheduler may be an option:
/system/scheduler/add interval=1w name=backup-partition on-event="/system/script/run backup-partition;" start-time=09:30:00;
@@ -39,7 +71,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..b4012c8 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.15-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,22 @@ 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),
+[gotify](mod/notification-gotify.md),
+[matrix](mod/notification-matrix.md),
+[ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md).
### Issues with SFTP client
@@ -71,8 +86,8 @@ See also
* [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)
---
-[◀ 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..5722227 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.15-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..d277db6 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.15-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..c4615b5 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.15-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..a9426db 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.15-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,28 @@ 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),
+[gotify](mod/notification-gotify.md),
+[matrix](mod/notification-matrix.md),
+[ntfy](mod/notification-ntfy.md) and/or
+[telegram](mod/notification-telegram.md).
Usage and invocation
--------------------
@@ -50,9 +67,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 +94,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-state-fail.avif b/doc/check-health.d/notification-08-state-fail.avif
new file mode 100644
index 0000000..ad049ac
--- /dev/null
+++ b/doc/check-health.d/notification-08-state-fail.avif
Binary files differ
diff --git a/doc/check-health.d/notification-09-state-ok.avif b/doc/check-health.d/notification-09-state-ok.avif
new file mode 100644
index 0000000..26f5a74
--- /dev/null
+++ b/doc/check-health.d/notification-09-state-ok.avif
Binary files differ
diff --git a/doc/check-health.md b/doc/check-health.md
index 52efa4c..33847e3 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.15-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,34 +17,50 @@ Description
-----------
This script is run from scheduler periodically, sending notification on
-health related events:
+health related events. Monitoring CPU and RAM utilization (available
+processing and memory resources) works on all devices:
+
+* high CPU utilization
+* high RAM utilization (low available RAM)
+
+With additional plugins functionality can be extended, depending on
+sensors available in hardware:
-* voltage jumps up or down more than configured threshold or drops below limit
+* voltage jumps up or down more than configured threshold
+* voltage drops below hard lower limit
+* fan failed or recovered
* power supply failed or recovered
* temperature is above or below threshold
-Note that bad initial state will not trigger an event.
+> ⚠️ **Warning**: Note that bad initial state will not trigger an event! For
+> example rebooting a device that is already too hot will not trigger an
+> alert on high temperature.
-Only sensors available in hardware can be checked. See what your
-hardware supports:
+### Sample notifications
- /system/health/print;
+#### CPU utilization
-### Sample notifications
+![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 state fail](check-health.d/notification-08-state-fail.avif)
+![check-health notification state ok](check-health.d/notification-09-state-ok.avif)
Requirements and installation
-----------------------------
@@ -45,7 +68,35 @@ 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.
+
+### Plugins
+
+Additional plugins are available for sensors available in hardware. First
+check what your hardware supports:
+
+ /system/health/print;
+
+Then install the plugin for *fan* and *power supply unit* *state*:
+
+ $ScriptInstallUpdate check-health,check-health.d/state;
+
+... or *temperature*:
+
+ $ScriptInstallUpdate check-health,check-health.d/temperature;
+
+... or *voltage*:
+
+ $ScriptInstallUpdate check-health,check-health.d/voltage;
+
+You can also combine the commands and install all or a subset of plugins
+in one go:
+
+ $ScriptInstallUpdate check-health,check-health.d/state,check-health.d/temperature,check-health.d/voltage;
Configuration
-------------
@@ -56,10 +107,17 @@ 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),
+[gotify](mod/notification-gotify.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..a0c441e 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.15-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,8 +42,11 @@ Just install the script:
Configuration
-------------
-Notification setting are required for e-mail,
-[matrix](mod/notification-matrix.md) and/or
+Also notification settings are required for
+[e-mail](mod/notification-email.md),
+[gotify](mod/notification-gotify.md),
+[matrix](mod/notification-matrix.md),
+[ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md).
See also
@@ -46,5 +56,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-perpetual-license.d/notification.avif b/doc/check-perpetual-license.d/notification.avif
new file mode 100644
index 0000000..70ca603
--- /dev/null
+++ b/doc/check-perpetual-license.d/notification.avif
Binary files differ
diff --git a/doc/check-perpetual-license.md b/doc/check-perpetual-license.md
new file mode 100644
index 0000000..0335fb5
--- /dev/null
+++ b/doc/check-perpetual-license.md
@@ -0,0 +1,71 @@
+Check perpetual license on CHR
+==============================
+
+[![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.15-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
+-----------
+
+On *Cloud Hosted Router* (*CHR*) the licensing is perpetual: Buy once, use
+forever - but it needs regular renewal. This script checks licensing state
+and sends a notification to warn before expiration.
+
+### Sample notification
+
+![check-perpetual-license notification](check-perpetual-license.d/notification.avif)
+
+Requirements and installation
+-----------------------------
+
+Just install the script:
+
+ $ScriptInstallUpdate check-perpetual-license;
+
+And add a scheduler for automatic update notification:
+
+ /system/scheduler/add interval=1d name=check-perpetual-license on-event="/system/script/run check-perpetual-license;" start-time=startup;
+
+Configuration
+-------------
+
+No extra configuration is required for this script, but notification
+settings are required for
+[e-mail](mod/notification-email.md),
+[gotify](mod/notification-gotify.md),
+[matrix](mod/notification-matrix.md),
+[ntfy](mod/notification-ntfy.md) and/or
+[telegram](mod/notification-telegram.md).
+
+Usage and invocation
+--------------------
+
+Be notified when run from scheduler or run it manually:
+
+ /system/script/run check-perpetual-license;
+
+Tips & Tricks
+-------------
+
+The script checks for full connectivity before acting, so scheduling at
+startup is perfectly valid:
+
+ /system/scheduler/add name=check-perpetual-license@startup on-event="/system/script/run check-perpetual-license;" start-time=startup;
+
+See also
+--------
+
+* [Notify on RouterOS update](check-routeros-update.md)
+
+---
+[⬅️ 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..a45e075 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.15-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.
@@ -23,14 +30,14 @@ automatically is supported.
> ⚠️ **Warning**: Installing updates is important from a security point
> of view. At the same time it can be source of serve breakage. So test
> versions in lab and read
-> [changelog](https://mikrotik.com/download/changelogs/) and
-> [forum](https://forum.mikrotik.com/viewforum.php?f=21) before deploying
+> [changelog ↗️](https://mikrotik.com/download/changelogs/) and
+> [forum ↗️](https://forum.mikrotik.com/viewforum.php?f=21) before deploying
> to your production environment! Automatic updates should be handled
> with care!
### 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,29 @@ 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:
+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
-* `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
+> ℹ️ **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,
-[matrix](mod/notification-matrix.md) and/or
+Also notification settings are required for
+[e-mail](mod/notification-email.md),
+[gotify](mod/notification-gotify.md),
+[matrix](mod/notification-matrix.md),
+[ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md).
Usage and invocation
@@ -71,12 +89,21 @@ 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
--------
+* [Check perpetual license on CHR](check-perpetual-license.md)
* [Automatically upgrade firmware and reboot](firmware-upgrade-reboot.md)
* [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..2378fed 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.15-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,11 @@ 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),
+[gotify](mod/notification-gotify.md),
+[matrix](mod/notification-matrix.md),
+[ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md).
Usage and invocation
@@ -59,5 +74,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..118d768 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.15-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,29 @@ 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),
+[gotify](mod/notification-gotify.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..b02f199 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.15-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..4211d85 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.16-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..54f1da0 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.15-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..46b80c2
--- /dev/null
+++ b/doc/fw-addr-lists.md
@@ -0,0 +1,140 @@
+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.16-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 a
+[collective list by GitHub user @stamparm ↗️](https://github.com/stamparm/ipsum),
+lists from [dshield.org ↗️](https://dshield.org/) and
+[blocklist.de ↗️](https://www.blocklist.de/), 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.
+> Even crashes for the complete scripting (and CLI) subsystem are possible.
+> This should be logged accordingly with warnings when global functions are
+> reloaded from scheduler.
+
+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. You may want to find the
+[certificate name from browser](../CERTIFICATES.md).
+
+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!
+
+See also
+--------
+
+* [Certificate name from browser](../CERTIFICATES.md)
+
+---
+[⬅️ 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..799cae7 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.15-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..5e4878f 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.15-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..a2e9748 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.15-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..f9f98e3 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.15-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..123656c 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.15-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..1f009b1 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.15-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
@@ -38,13 +45,17 @@ Installing [ppp-on-up](ppp-on-up.md) may solve this.
Configuration
-------------
-An address list entry is updated with current prefix and can be used in
-firewall rules, comment has to be "`ipv6-pool-`" and actual pool name:
+As an address-list entry is mandatory a dynamic one is created automatically.
+It is updated with current prefix and can be used in firewall rules.
+
+Alternatively a static address-list entry can be used, where comment has to
+be "`ipv6-pool-`" and actual pool name. Use what ever list is desired, and
+create it with:
/ipv6/firewall/address-list/add address=2003:cf:2f0f:de00::/56 comment=ipv6-pool-isp list=extern;
-As this entry is mandatory it is created automatically if it does not exist,
-with the comment also set for list.
+If the dynamic entry exists already you need to remove it before creating
+the static one..
Address list entries for specific interfaces can be updated as well. The
interface needs to get its address from pool `isp` and the address list entry
@@ -52,6 +63,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 +80,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..f83c383 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.15-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..a194396 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.15-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..f6086c8 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.15-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
+* Gotify, Matrix, Ntfy and Telegram are not supported
+
+The script works around the limitations, for example it does:
-The script is intended to be run periodically. It collects log messages
-and forwards them via notification.
+* 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*, *Gotify*, *Matrix*,
+ *Ntfy* 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
-----------------------------
@@ -38,6 +53,12 @@ Just install the script:
Configuration
-------------
+The default configuration should provide reasonable presets, filtering
+*info*, and effectively forwarding *warning* and *error*.
+
+> 💡️ **Hint**: Please try with defaults first, especially if you are not
+> familiar with regular expressions!
+
The configuration goes to `global-config-overlay`, these are the parameters:
* `LogForwardFilter`: define topics *not* to be forwarded
@@ -46,10 +67,36 @@ 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),
+[gotify](mod/notification-gotify.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..629c526 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.15-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..cf29199 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.15-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..7daba15 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.15-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..c07853e 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.15-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..127bf96
--- /dev/null
+++ b/doc/mod/notification-email.md
@@ -0,0 +1,89 @@
+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.15-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 Gotify](notification-gotify.md)
+* [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-gotify.d/appsetup.avif b/doc/mod/notification-gotify.d/appsetup.avif
new file mode 100644
index 0000000..58f57a8
--- /dev/null
+++ b/doc/mod/notification-gotify.d/appsetup.avif
Binary files differ
diff --git a/doc/mod/notification-gotify.md b/doc/mod/notification-gotify.md
new file mode 100644
index 0000000..6fce629
--- /dev/null
+++ b/doc/mod/notification-gotify.md
@@ -0,0 +1,97 @@
+Send notifications via Gotify
+===========================
+
+[![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.15-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
+[Gotify ↗️](https://gotify.net/). 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-gotify;
+
+Also deploy the [Gotify server ↗️](https://github.com/gotify/server) and
+optionally install a Gotify client on your mobile device.
+
+Configuration
+-------------
+
+Follow the [Installation ↗️](https://gotify.net/docs/install) instructions
+and the [First Login ↗️](https://gotify.net/docs/first-login) setup. Once
+you have a user and account you can start creating apps. Each app is an
+independent notification feed for a device or application.
+
+![Create new app](notification-gotify.d/appsetup.avif)
+
+On creation apps are assigned a *Token* for authentification, you will need
+that in configuration.
+
+Edit `global-config-overlay`, add `GotifyServer` with your server address
+(just the address, no protocol - `https://` is assumed) and `GotifyToken`
+with the *Token* from your configured app on the Gotify server. 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.
+
+For a custom service installing an additional certificate may be required.
+You may want to install that certificate manually, after finding the
+[certificate name from browser](../../CERTIFICATES.md).
+
+Usage and invocation
+--------------------
+
+There's nothing special to do. Every script or function sending a notification
+will now send it to your Gotify application feed.
+
+But of course you can use the function to send notifications directly. Give
+it a try:
+
+ $SendGotify "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 SendGotify;
+ :global SendNotification;
+
+In case there is a situation when the queue needs to be purged there is a
+function available:
+
+ $PurgeGotifyQueue;
+
+See also
+--------
+
+* [Certificate name from browser](../../CERTIFICATES.md)
+* [Send notifications via e-mail](notification-email.md)
+* [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..da6d6de 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.15-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.
@@ -10,7 +17,7 @@ Description
-----------
This module adds support for sending notifications via
-[Matrix](https://matrix.org/) via client server api. A queue is used to
+[Matrix ↗️](https://matrix.org/) via client server api. A queue is used to
make sure notifications are not lost on failure but sent later.
Requirements and installation
@@ -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,66 @@ 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.
-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:
+The example below is for `matrix.org`, which uses a trust chain from *Google
+Trust Services*. Run this to import the required certificate:
- /tool/fetch "https://matrix.org/.well-known/matrix/client" output=user;
+ $CertificateAvailable "GTS Root R4";
-![home server](notification-matrix.d/01-home-server.avif)
+Replace the CA certificate name with what ever is needed for your server.
+You may want to find the
+[certificate name from browser](../../CERTIFICATES.md).
-So the home server for "*matrix.org*" is "*matrix-client.matrix.org*".
-Please strip the protocol ("*https://*") for `MatrixHomeServer` if given.
+### From other device
-### Access token
+If you have setup your Matrix *notification account* before just reuse that.
+Copy the relevant configuration to the device to be configured.
-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).
+### Setup new account
-We use the home server discovered above, "*matrix-client.matrix.org*".
-The user is "*example*" and password is "*v3ry-s3cr3t*".
+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.
- /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
+
+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:
-![access token](notification-matrix.d/02-access-token.avif)
+ $SetupMatrixAuthenticate "@example:matrix.org" "v3ry-s3cr3t";
-The server replied with a JSON object containing the `access_token`, use that
-for `MatrixAccessToken`.
+![authenticate](notification-matrix.d/01-authenticate.avif)
-### Room
+The configuration is written to a new configuration snippet
+`global-config-overlay.d/mod/notification-matrix`.
-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`.
+#### Join Room
-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.
+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).
- /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;
+Finally make the *notification account* join into the room by accepting
+the invite.
-![join room](notification-matrix.d/03-join-room.avif)
+ $SetupMatrixJoinRoom "!WUcxpSjKyxSGelouhA:matrix.org";
+
+![join room](notification-matrix.d/02-join-room.avif)
+
+The configuration is appended to the configuration snippet
+`global-config-overlay.d/mod/notification-matrix`.
Usage and invocation
--------------------
@@ -90,11 +105,36 @@ 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
--------
+* [Certificate name from browser](../../CERTIFICATES.md)
+* [Send notifications via e-mail](notification-email.md)
+* [Send notifications via Gotify](notification-gotify.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..993501d
--- /dev/null
+++ b/doc/mod/notification-ntfy.md
@@ -0,0 +1,99 @@
+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.15-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.
+
+Also available is `NtfyServerToken` to add a bearer token for authentication.
+
+For a custom service installing an additional certificate may be required.
+You may want to install that certificate manually, after finding the
+[certificate name from browser](../../CERTIFICATES.md).
+
+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
+--------
+
+* [Certificate name from browser](../../CERTIFICATES.md)
+* [Send notifications via e-mail](notification-email.md)
+* [Send notifications via Gotify](notification-gotify.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/getchatid.avif b/doc/mod/notification-telegram.d/getchatid.avif
new file mode 100644
index 0000000..7792969
--- /dev/null
+++ b/doc/mod/notification-telegram.d/getchatid.avif
Binary files differ
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..804104f 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.15-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.
@@ -10,7 +17,7 @@ Description
-----------
This module adds support for sending notifications via
-[Telegram](https://telegram.org/) via bot api. A queue is used to make sure
+[Telegram ↗️](https://telegram.org/) via bot api. A queue is used to make sure
notifications are not lost on failure but sent later.
Requirements and installation
@@ -26,26 +33,41 @@ and create an account.
Configuration
-------------
-Open Telegram, then start a chat with [BotFather](https://t.me/BotFather) and
+Open Telegram, then start a chat with [BotFather ↗️](https://t.me/BotFather) and
create your own bot:
![create new bot](notification-telegram.d/newbot.avif)
-Now open a chat with your bot and start it by clicking the `START` button.
+Set that token from *BotFather* (use your own!) to `TelegramTokenId`, for
+now just temporarily:
+
+ :set TelegramTokenId "5214364459:AAHLwf1o7ybbKDo6pY24Kd2bZ5rjCakDXTc";
+
+Now open a chat with your bot and start it by clicking the `START` button,
+then send your first message. Any text will do. On your device run
+`$GetTelegramChatId` to retrieve the chat id:
-Open just another chat with [GetIDs Bot](https://t.me/getidsbot), again start
-with the `START` button. It will send you some information, including the
-`id`, just below `You`.
+ $GetTelegramChatId;
+
+![get chat id](notification-telegram.d/getchatid.avif)
Finally edit `global-config-overlay`, add `TelegramTokenId` with the token
-from *BotFather* and `TelegramChatId` with your id from *GetIDs Bot*. Then
+from *BotFather* and `TelegramChatId` with your retrieved chat id. 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
-*GetIDs Bot* to a group, then use the group's id (which starts with a dash)
-for `TelegramChatId`. Then remove *GetIDs Bot* from group.
+Sending notifications to a group is possible as well. Add your bot to a group
+and make it an admin (required for read access!) and send a message and run
+`$GetTelegramChatId` again. Then use that chat id (which starts with a dash)
+for `TelegramChatId`.
+
+Groups can enable the `Topics` feature. Use `TelegramThreadId` to send to a
+specific topic in a group.
Usage and invocation
--------------------
@@ -53,11 +75,50 @@ 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 Gotify](notification-gotify.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..955d12e 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.15-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..344f4bc
--- /dev/null
+++ b/doc/mod/ssh-keys-import.md
@@ -0,0 +1,69 @@
+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.16-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-ed25519 AAAAC3Nza...ZVugJT user" admin;
+ $SSHKeysImport "ssh-rsa AAAAB3Nza...QYZk8= 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..be15bc9 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.15-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..0d94918 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.16-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,45 @@ 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="cloudflare-dns.com" address=1.1.1.1;
+ /tool/netwatch/add comment="doh" host=1.1.1.1;
+
+Be aware that you have to keep the ip address in sync with real world
+manually!
+
+Importing a certificate automatically is possible. You may want to find the
+[certificate name from browser](../CERTIFICATES.md).
+
+ /tool/netwatch/add comment="doh, doh-cert=DigiCert Global Root G2" host=1.1.1.1;
+ /tool/netwatch/add comment="doh, doh-cert=DigiCert Global Root G3" host=9.9.9.9;
+ /tool/netwatch/add comment="doh, doh-cert=GTS Root R1" host=8.8.8.8;
+
+> ⚠️ **Warning**: Combining these techniques can cause some confusion and
+> troubles! Chances are that a service uses different certificates based
+> on indicated server name.
+
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,15 +84,16 @@ 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`.
See also
--------
+* [Certificate name from browser](../CERTIFICATES.md)
* [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..91c568f 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.15-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,14 @@ 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),
+[gotify](mod/notification-gotify.md),
+[matrix](mod/notification-matrix.md),
+[ntfy](mod/notification-ntfy.md) and/or
+[telegram](mod/notification-telegram.md).
### Hooks
@@ -44,39 +58,47 @@ 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.
-### Count threshould
+Getting the escaping right may be troublesome. Please consider adding a
+script in `/system/script`, then running that from hook.
+
+### Count threshold
-The count threshould (default is 5 checks) is configurable as well:
+The count threshold (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.
+threshold by one.
### Update from DNS
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" host=0.0;
-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 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.
+
+The address family is preserved, so if you want AAAA records (for IPv6)
+use this:
+
+ /tool/netwatch/add comment="notify, name=example.com, resolve=example.com" host=::;
### No notification on host down
@@ -84,13 +106,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/" host=0.0;
Tips & Tricks
-------------
@@ -99,10 +140,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 +153,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 +171,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 +183,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 +191,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..3694d35 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.15-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..a0a1795 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.15-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), use a numerical value in days suffixed with a `d` to defer further
+
+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..305afc1 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.15-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..b696c85 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.15-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..0c1317d 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.15-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,62 @@ 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),
+[gotify](mod/notification-gotify.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..c72f220 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.15-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..1e6f70f
--- /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.15-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..cb96aa1 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.15-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..de9f622 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.15-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..ee0fe98 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.15-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)