From 405c329f39d402911ad5040f893a952df6407813 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 24 Apr 2025 23:07:11 +0200 Subject: [PATCH 01/18] README: mark all external links --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e8e1b686..dcf9c283 100644 --- a/README.md +++ b/README.md @@ -10,9 +10,9 @@ RouterOS Scripts ![RouterOS Scripts Logo](logo.svg) -[RouterOS](https://mikrotik.com/software) is the operating system developed -by [MikroTik](https://mikrotik.com/aboutus) for networking tasks. This -repository holds a number of [scripts](https://wiki.mikrotik.com/wiki/Manual:Scripting) +[RouterOS ↗️](https://mikrotik.com/software) is the operating system developed +by [MikroTik ↗️](https://mikrotik.com/aboutus) for networking tasks. This +repository holds a number of [scripts ↗️](https://wiki.mikrotik.com/wiki/Manual:Scripting) to manage RouterOS devices or extend their functionality. *Use at your own risk*, pay attention to @@ -35,7 +35,7 @@ Specific scripts may require even newer RouterOS version. > running RouterOS v6 switch to `routeros-v6` branch! Starting with RouterOS 7.17 the -[device-mode](https://help.mikrotik.com/docs/spaces/ROS/pages/93749258/Device-mode) +[device-mode ↗️](https://help.mikrotik.com/docs/spaces/ROS/pages/93749258/Device-mode) has been extended to give more fine-grained control over what features are available. You need to enable `scheduler` and `fetch` at least, specific scripts may require additional features. @@ -61,9 +61,9 @@ First time users should take the long way below. ### Live presentation Want to see it in action? I've had a presentation [Repository based -RouterOS script distribution](https://www.youtube.com/watch?v=B9neG3oAhcY) +RouterOS script distribution ↗️](https://www.youtube.com/watch?v=B9neG3oAhcY) including demonstation recorded live at [MUM Europe -2019](https://mum.mikrotik.com/2019/EU/) in Vienna. +2019 ↗️](https://mum.mikrotik.com/2019/EU/) in Vienna. > ⚠️ **Warning**: Some details changed. So see the presentation, then follow > the steps below for up-to-date commands. @@ -83,7 +83,7 @@ Note that the commands above do *not* verify server certificate, so if you want to be safe download with your workstations's browser and transfer the file to your MikroTik device. -* [ISRG Root X2](https://letsencrypt.org/certs/isrg-root-x2.pem) +* [ISRG Root X2 ↗️](https://letsencrypt.org/certs/isrg-root-x2.pem) Then we import the certificate. @@ -194,7 +194,7 @@ Scheduler and events -------------------- Most scripts are designed to run regularly from -[scheduler](https://wiki.mikrotik.com/wiki/Manual:System/Scheduler). We just +[scheduler ↗️](https://wiki.mikrotik.com/wiki/Manual:System/Scheduler). We just added `check-routeros-update`, so let's run it daily to make sure not to miss an update. @@ -328,7 +328,7 @@ Possibly a scheduler and other configuration has to be removed as well. Contact ------- -We have a Telegram Group [RouterOS-Scripts](https://t.me/routeros_scripts)! +We have a Telegram Group [RouterOS-Scripts ↗️](https://t.me/routeros_scripts)! [![RouterOS Scripts Telegram Group](README.d/telegram-group.avif)](https://t.me/routeros_scripts) @@ -352,7 +352,7 @@ at github. This project is developed in private spare time and usage is free of charge for you. If you like the scripts and think this is of value for you or your business please consider to -[donate with PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J). +[donate with PayPal ↗️](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J). [![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=for-the-badge)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J) From 158230070fbfae7a83b881b7bcd6f1651de45e54 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 24 Apr 2025 23:14:02 +0200 Subject: [PATCH 02/18] BRANCHES: mark all external links --- BRANCHES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BRANCHES.md b/BRANCHES.md index 8a0bdadf..dc4f4ac4 100644 --- a/BRANCHES.md +++ b/BRANCHES.md @@ -13,7 +13,7 @@ Installing from branches > ⚠️ **Warning**: Living on the edge? Great, read on! > If not: Please use the `main` branch and leave this page! -These scripts are developed in a [git](https://git-scm.com/) repository. +These scripts are developed in a [git ↗️](https://git-scm.com/) repository. Development and experimental branches are used to provide early access for specific changes. You can install scripts from these branches for testing. From 8328400e8724006ce68a401d8297cbd8f4f30a7e Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 24 Apr 2025 23:14:53 +0200 Subject: [PATCH 03/18] CERTIFICATES: mark all external links --- CERTIFICATES.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CERTIFICATES.md b/CERTIFICATES.md index 5432d78a..8ead4527 100644 --- a/CERTIFICATES.md +++ b/CERTIFICATES.md @@ -21,7 +21,7 @@ first step of [installation](README.md#the-long-way-in-detail) is importing the certificate. The scripts can install additional certificates when required. This happens -from this repository if available, or from [mkcert.org](https://mkcert.org) +from this repository if available, or from [mkcert.org ↗️](https://mkcert.org) as a fallback. Get the certificate's CommonName @@ -29,7 +29,7 @@ Get the certificate's CommonName But how to determine what certificate may be required? Often easiest way is to use a desktop browser to get that information. This demonstration uses -[Mozilla Firefox](https://www.mozilla.org/firefox/). +[Mozilla Firefox ↗️](https://www.mozilla.org/firefox/). Let's assume we want to make sure the certificate for [git.eworm.de](https://git.eworm.de/) is available. Open that page in the From a1437a4c8315f2640925323cdea7fb620b7bbf5f Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 24 Apr 2025 23:13:00 +0200 Subject: [PATCH 04/18] CONTRIBUTIONS: mark all external links --- CONTRIBUTIONS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTIONS.md b/CONTRIBUTIONS.md index 55d2205b..0b894531 100644 --- a/CONTRIBUTIONS.md +++ b/CONTRIBUTIONS.md @@ -31,7 +31,7 @@ for details! ## Donations Add yourself to the list, -[donate with PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)! +[donate with PayPal ↗️](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J)! * Abdul Mannan Abbasi * Andrea Ruffini Perico From b12f8a39745cb54318b5d55bf65a1d8cfff81b02 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 24 Apr 2025 23:17:58 +0200 Subject: [PATCH 05/18] doc/backup-cloud: mark all external links --- doc/backup-cloud.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/backup-cloud.md b/doc/backup-cloud.md index 72869606..740af537 100644 --- a/doc/backup-cloud.md +++ b/doc/backup-cloud.md @@ -17,7 +17,7 @@ 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 with > workaround only. A notification *should* be sent anyway. But it can result From 4118f53aae9c87dcc90dff6c800a8baf5d04785d Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 24 Apr 2025 23:18:09 +0200 Subject: [PATCH 06/18] doc/backup-partition: mark all external links --- doc/backup-partition.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/backup-partition.md b/doc/backup-partition.md index 9d615a53..50b8a094 100644 --- a/doc/backup-partition.md +++ b/doc/backup-partition.md @@ -17,7 +17,7 @@ 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. From 34eac64f3378387f402151d1a017fc00e81b7c61 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 24 Apr 2025 23:18:26 +0200 Subject: [PATCH 07/18] doc/check-routeros-update: mark all external links --- doc/check-routeros-update.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/check-routeros-update.md b/doc/check-routeros-update.md index b6c716cb..ea9bcbec 100644 --- a/doc/check-routeros-update.md +++ b/doc/check-routeros-update.md @@ -30,8 +30,8 @@ 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! From 3788a3e2861c7a3f48f221771977c133204a7f32 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 24 Apr 2025 23:18:40 +0200 Subject: [PATCH 08/18] doc/fw-addr-lists: mark all external links --- doc/fw-addr-lists.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/fw-addr-lists.md b/doc/fw-addr-lists.md index cb560d74..d09383bf 100644 --- a/doc/fw-addr-lists.md +++ b/doc/fw-addr-lists.md @@ -19,10 +19,10 @@ 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. +[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. From 2fa044972cc2e38e404b0e76035609c51174c0d3 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 24 Apr 2025 23:18:50 +0200 Subject: [PATCH 09/18] doc/log-forward: mark all external links --- doc/log-forward.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/log-forward.md b/doc/log-forward.md index 3c195694..9ead1652 100644 --- a/doc/log-forward.md +++ b/doc/log-forward.md @@ -72,7 +72,7 @@ The configuration goes to `global-config-overlay`, these are the parameters: > 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). +[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: From 0eaefcdc72ba217990fce4bf17460337697305a9 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 24 Apr 2025 23:23:12 +0200 Subject: [PATCH 10/18] doc/mod/notification-email: mark all external links --- doc/mod/notification-email.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/mod/notification-email.md b/doc/mod/notification-email.md index 34d1c09e..dabadf31 100644 --- a/doc/mod/notification-email.md +++ b/doc/mod/notification-email.md @@ -32,7 +32,7 @@ Configuration ------------- Set up your device's -[e-mail settings](https://wiki.mikrotik.com/wiki/Manual:Tools/email). +[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. From 183b16d83c1a182ba35d21453687a27106d94883 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 24 Apr 2025 23:23:31 +0200 Subject: [PATCH 11/18] doc/mod/notification-matrix: mark all external links --- doc/mod/notification-matrix.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/mod/notification-matrix.md b/doc/mod/notification-matrix.md index 89c1b01d..da725cff 100644 --- a/doc/mod/notification-matrix.md +++ b/doc/mod/notification-matrix.md @@ -17,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 From c69b13c87961dbfced0002e85b98a32fe6b7fc84 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 24 Apr 2025 23:23:41 +0200 Subject: [PATCH 12/18] doc/mod/notification-notify: mark all external links --- doc/mod/notification-ntfy.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/mod/notification-ntfy.md b/doc/mod/notification-ntfy.md index 51756ace..ef5dd58c 100644 --- a/doc/mod/notification-ntfy.md +++ b/doc/mod/notification-ntfy.md @@ -17,7 +17,7 @@ Description ----------- This module adds support for sending notifications via -[Ntfy](https://ntfy.sh/). A queue is used to make sure +[Ntfy ↗️](https://ntfy.sh/). A queue is used to make sure notifications are not lost on failure but sent later. Requirements and installation @@ -28,7 +28,7 @@ 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. +[web app ↗️](https://ntfy.sh/app) in a browser of your choice. Configuration ------------- From 3822887ba2d157101caf3529a5234d3974ef472e Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 24 Apr 2025 23:23:49 +0200 Subject: [PATCH 13/18] doc/mod/notification-telegram: mark all external links --- doc/mod/notification-telegram.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/mod/notification-telegram.md b/doc/mod/notification-telegram.md index 2d00116a..6b10fed5 100644 --- a/doc/mod/notification-telegram.md +++ b/doc/mod/notification-telegram.md @@ -17,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 @@ -33,7 +33,7 @@ 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) @@ -102,7 +102,7 @@ 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. +chat with [BotFather ↗️](https://t.me/BotFather) and set it there. ![set profile photo](notification-telegram.d/setuserpic.avif) From fe649181180986935a049b489322b10327ba0697 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 28 Apr 2025 10:48:36 +0200 Subject: [PATCH 14/18] README: add disclaimer on external links --- README.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index dcf9c283..1d2d64fb 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,8 @@ repository holds a number of [scripts ↗️](https://wiki.mikrotik.com/wiki/Man to manage RouterOS devices or extend their functionality. *Use at your own risk*, pay attention to -[license and warranty](#license-and-warranty)! +[license and warranty](#license-and-warranty), and +[disclaimer on external links](#disclaimer-on-external-links)! Requirements ------------ @@ -371,6 +372,21 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the [GNU General Public License](COPYING.md) for more details. +Disclaimer on external links +---------------------------- + +Our website contains links to the websites of third parties ("external +links"). As the content of these websites is not under our control, we +cannot assume any liability for such external content. In all cases, the +provider of information of the linked websites is liable for the content +and accuracy of the information provided. At the point in time when the +links were placed, no infringements of the law were recognisable to us. +As soon as an infringement of the law becomes known to us, we will +immediately remove the link in question. + +> 💡️ **Hint**: All external links are marked with an arrow pointing +> diagonally in an up-right (or north-east) direction (↗️). + Upstream -------- From 0717ebfbd500517231a6da31091a1f4d59bedd00 Mon Sep 17 00:00:00 2001 From: Leonardo David Monteiro Date: Tue, 4 Mar 2025 17:21:00 +0100 Subject: [PATCH 15/18] introduce mod/notification-gotify... ... for sending notifications via Gotify (https://gotify.net). Closes: https://github.com/eworm-de/routeros-scripts/pull/92 Co-authored-by: Christian Hesse --- CERTIFICATES.md | 1 + README.md | 1 + doc/backup-cloud.md | 1 + doc/backup-upload.md | 1 + doc/check-certificates.md | 1 + doc/check-health.md | 1 + doc/check-lte-firmware-upgrade.md | 1 + doc/check-perpetual-license.md | 1 + doc/check-routeros-update.md | 1 + doc/collect-wireless-mac.md | 1 + doc/daily-psk.md | 1 + doc/log-forward.md | 7 +- doc/mod/notification-email.md | 1 + doc/mod/notification-gotify.d/appsetup.avif | Bin 0 -> 18099 bytes doc/mod/notification-gotify.md | 97 ++++++++++++++ doc/mod/notification-matrix.md | 1 + doc/mod/notification-ntfy.md | 1 + doc/mod/notification-telegram.md | 1 + doc/netwatch-notify.md | 1 + doc/sms-forward.md | 1 + global-config.rsc | 6 + global-functions.rsc | 2 +- mod/notification-gotify.rsc | 139 ++++++++++++++++++++ news-and-changes.rsc | 1 + 24 files changed, 265 insertions(+), 4 deletions(-) create mode 100644 doc/mod/notification-gotify.d/appsetup.avif create mode 100644 doc/mod/notification-gotify.md create mode 100644 mod/notification-gotify.rsc diff --git a/CERTIFICATES.md b/CERTIFICATES.md index 8ead4527..69d6c185 100644 --- a/CERTIFICATES.md +++ b/CERTIFICATES.md @@ -74,6 +74,7 @@ See also * [Download, import and update firewall address-lists](doc/fw-addr-lists.md) * [Manage DNS and DoH servers from netwatch](doc/netwatch-dns.md) +* [Send notifications via Gotify](doc/mod/notification-gotify.md) * [Send notifications via Matrix](doc/mod/notification-matrix.md) * [Send notifications via Ntfy](doc/mod/notification-ntfy.md) diff --git a/README.md b/README.md index 1d2d64fb..2a8b2cef 100644 --- a/README.md +++ b/README.md @@ -268,6 +268,7 @@ Available modules * [Inspect variables](doc/mod/inspectvar.md) (`mod/inspectvar`) * [IP address calculation](doc/mod/ipcalc.md) (`mod/ipcalc`) * [Send notifications via e-mail](doc/mod/notification-email.md) (`mod/notification-email`) +* [Send notifications via Gotify](doc/mod/notification-gotify.md) (`mod/notification-gotify`) * [Send notifications via Matrix](doc/mod/notification-matrix.md) (`mod/notification-matrix`) * [Send notifications via Ntfy](doc/mod/notification-ntfy.md) (`mod/notification-ntfy`) * [Send notifications via Telegram](doc/mod/notification-telegram.md) (`mod/notification-telegram`) diff --git a/doc/backup-cloud.md b/doc/backup-cloud.md index 740af537..7d55d748 100644 --- a/doc/backup-cloud.md +++ b/doc/backup-cloud.md @@ -49,6 +49,7 @@ The configuration goes to `global-config-overlay`, these are the parameters: 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). diff --git a/doc/backup-upload.md b/doc/backup-upload.md index 6a5b0e4f..b4012c8b 100644 --- a/doc/backup-upload.md +++ b/doc/backup-upload.md @@ -55,6 +55,7 @@ The configuration goes to `global-config-overlay`, these are the parameters: 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). diff --git a/doc/check-certificates.md b/doc/check-certificates.md index 4c144ba3..a9426dba 100644 --- a/doc/check-certificates.md +++ b/doc/check-certificates.md @@ -51,6 +51,7 @@ 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). diff --git a/doc/check-health.md b/doc/check-health.md index 7cf0c33e..33847e36 100644 --- a/doc/check-health.md +++ b/doc/check-health.md @@ -113,6 +113,7 @@ The configuration goes to `global-config-overlay`, these are the parameters: 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). diff --git a/doc/check-lte-firmware-upgrade.md b/doc/check-lte-firmware-upgrade.md index 3693b712..a84e2ac2 100644 --- a/doc/check-lte-firmware-upgrade.md +++ b/doc/check-lte-firmware-upgrade.md @@ -44,6 +44,7 @@ Configuration Also notification settings are required for [e-mail](mod/notification-email.md), +[gotify](mod/notification-gotify.md), [matrix](mod/notification-matrix.md) and/or [telegram](mod/notification-telegram.md). diff --git a/doc/check-perpetual-license.md b/doc/check-perpetual-license.md index d4440045..0335fb54 100644 --- a/doc/check-perpetual-license.md +++ b/doc/check-perpetual-license.md @@ -41,6 +41,7 @@ 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). diff --git a/doc/check-routeros-update.md b/doc/check-routeros-update.md index ea9bcbec..a45e0751 100644 --- a/doc/check-routeros-update.md +++ b/doc/check-routeros-update.md @@ -73,6 +73,7 @@ The configuration goes to `global-config-overlay`, these are the parameters: 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). diff --git a/doc/collect-wireless-mac.md b/doc/collect-wireless-mac.md index 01975223..2378fed8 100644 --- a/doc/collect-wireless-mac.md +++ b/doc/collect-wireless-mac.md @@ -54,6 +54,7 @@ entries are to be added. 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). diff --git a/doc/daily-psk.md b/doc/daily-psk.md index 4a3de64e..118d768c 100644 --- a/doc/daily-psk.md +++ b/doc/daily-psk.md @@ -79,6 +79,7 @@ For legacy local interface: 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). diff --git a/doc/log-forward.md b/doc/log-forward.md index 9ead1652..f6086c85 100644 --- a/doc/log-forward.md +++ b/doc/log-forward.md @@ -22,15 +22,15 @@ server (see `/system/logging`). This has some limitation, however: * does not work early after boot if network connectivity is not yet established, or breaks intermittently * lots of messages generate a flood of mails -* Matrix, Ntfy and Telegram are not supported +* Gotify, Matrix, Ntfy and Telegram are not supported The script works around the limitations, for example it does: * read from `/log`, including messages from early boot * skip multi-repeated messages * rate-limit itself to mitigate flooding -* forward via notification (which includes *e-mail*, *Matrix*, *Ntfy* and - *Telegram* when installed and configured, see below) +* 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. @@ -80,6 +80,7 @@ To forward **all** (ignoring severity) log messages with topics `account` 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). diff --git a/doc/mod/notification-email.md b/doc/mod/notification-email.md index dabadf31..127bf964 100644 --- a/doc/mod/notification-email.md +++ b/doc/mod/notification-email.md @@ -79,6 +79,7 @@ function available: 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) diff --git a/doc/mod/notification-gotify.d/appsetup.avif b/doc/mod/notification-gotify.d/appsetup.avif new file mode 100644 index 0000000000000000000000000000000000000000..58f57a807cd9c4853bf819336af8dc65f2eddd48 GIT binary patch literal 18099 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 literal 0 HcmV?d00001 diff --git a/doc/mod/notification-gotify.md b/doc/mod/notification-gotify.md new file mode 100644 index 00000000..6fce6293 --- /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.md b/doc/mod/notification-matrix.md index da725cff..da6d6dea 100644 --- a/doc/mod/notification-matrix.md +++ b/doc/mod/notification-matrix.md @@ -131,6 +131,7 @@ 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) diff --git a/doc/mod/notification-ntfy.md b/doc/mod/notification-ntfy.md index ef5dd58c..993501d9 100644 --- a/doc/mod/notification-ntfy.md +++ b/doc/mod/notification-ntfy.md @@ -90,6 +90,7 @@ 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) diff --git a/doc/mod/notification-telegram.md b/doc/mod/notification-telegram.md index 6b10fed5..804104fa 100644 --- a/doc/mod/notification-telegram.md +++ b/doc/mod/notification-telegram.md @@ -115,6 +115,7 @@ 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) diff --git a/doc/netwatch-notify.md b/doc/netwatch-notify.md index 81adfe9d..91c568fc 100644 --- a/doc/netwatch-notify.md +++ b/doc/netwatch-notify.md @@ -47,6 +47,7 @@ The hosts to be checked have to be added to netwatch with specific comment: 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). diff --git a/doc/sms-forward.md b/doc/sms-forward.md index ccb6482b..0c1317d3 100644 --- a/doc/sms-forward.md +++ b/doc/sms-forward.md @@ -56,6 +56,7 @@ The configuration goes to `global-config-overlay`, this is the only parameter: 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). diff --git a/global-config.rsc b/global-config.rsc index fa32b163..42a457a5 100644 --- a/global-config.rsc +++ b/global-config.rsc @@ -63,6 +63,12 @@ :global NtfyServerToken ""; :global NtfyTopic ""; +# You can send Gotify notifications. Configure these settings and +# install the module: +# $ScriptInstallUpdate mod/notification-gotify +:global GotifyServer ""; +:global GotifyToken ""; + # It is possible to override e-mail, Telegram, Matrix and Ntfy setting # for every script. This is done in arrays, where 'Override' is appended # to the variable name, like this: diff --git a/global-functions.rsc b/global-functions.rsc index 72c36cdc..71aa7de3 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -15,7 +15,7 @@ # Git commit id & info, expected configuration version :global CommitId "unknown"; :global CommitInfo "unknown"; -:global ExpectedConfigVersion 136; +:global ExpectedConfigVersion 137; # global variables not to be changed by user :global GlobalFunctionsReady false; diff --git a/mod/notification-gotify.rsc b/mod/notification-gotify.rsc new file mode 100644 index 00000000..70709189 --- /dev/null +++ b/mod/notification-gotify.rsc @@ -0,0 +1,139 @@ +#!rsc by RouterOS +# RouterOS script: mod/notification-gotify +# Copyright (c) 2013-2025 Christian Hesse +# Leonardo David Monteiro +# https://rsc.eworm.de/COPYING.md +# +# requires RouterOS, version=7.15 +# requires device-mode, fetch, scheduler +# +# send notifications via Gotify (gotify.net) +# https://rsc.eworm.de/doc/mod/notification-gotify.md + +:global FlushGotifyQueue; +:global NotificationFunctions; +:global PurgeGotifyQueue; +:global SendGotify; +:global SendGotify2; + +# flush Gotify queue +:set FlushGotifyQueue do={ :do { + :global GotifyQueue; + + :global IsFullyConnected; + :global LogPrint; + + :if ([ $IsFullyConnected ] = false) do={ + $LogPrint debug $0 ("System is not fully connected, not flushing."); + :return false; + } + + :local AllDone true; + :local QueueLen [ :len $GotifyQueue ]; + + :if ([ :len [ /system/scheduler/find where name="_FlushGotifyQueue" ] ] > 0 && $QueueLen = 0) do={ + $LogPrint warning $0 ("Flushing Gotify messages from scheduler, but queue is empty."); + } + + :foreach Id,Message in=$GotifyQueue do={ + :if ([ :typeof $Message ] = "array" ) do={ + :do { + /tool/fetch check-certificate=yes-without-crl output=none http-method=post \ + http-header-field=($Message->"headers") http-data=[ :serialize to=json ($Message->"message") ] \ + ($Message->"url") as-value; + :set ($GotifyQueue->$Id); + } on-error={ + $LogPrint debug $0 ("Sending queued Gotify message failed."); + :set AllDone false; + } + } + } + + :if ($AllDone = true && $QueueLen = [ :len $GotifyQueue ]) do={ + /system/scheduler/remove [ find where name="_FlushGotifyQueue" ]; + :set GotifyQueue; + } +} on-error={ + :global ExitError; $ExitError false $0; +} } + +# send notification via Gotify - expects one array argument +:set ($NotificationFunctions->"gotify") do={ + :local Notification $1; + + :global Identity; + :global IdentityExtra; + :global GotifyQueue; + :global GotifyServer; + :global GotifyServerOverride; + :global GotifyToken; + :global GotifyTokenOverride; + + :global EitherOr; + :global FetchUserAgentStr; + :global IfThenElse; + :global LogPrint; + :global SymbolForNotification; + + :local Server [ $EitherOr ($GotifyServerOverride->($Notification->"origin")) $GotifyServer ]; + :local Token [ $EitherOr ($GotifyTokenOverride->($Notification->"origin")) $GotifyToken ]; + + :if ([ :len $Token ] = 0) do={ + :return false; + } + + :local Url ("https://" . $Server . "/message"); + :local Headers ({ [ $FetchUserAgentStr ($Notification->"origin") ]; \ + ("X-Gotify-Key: " . $Token); "Content-Type: application/json" }); + :local Message ({ + "title"=("[" . $IdentityExtra . $Identity . "] " . ($Notification->"subject")); \ + "message"=(($Notification->"message") . "\n" . [ $IfThenElse ([ :len ($Notification->"link") ] > 0) \ + ("\n" . [ $SymbolForNotification "link" ] . ($Notification->"link")) ]); \ + "priority"=[ :tonum [ $IfThenElse ($Notification->"silent") 2 5 ] ] }); + + :do { + /tool/fetch check-certificate=yes-without-crl output=none http-method=post \ + http-header-field=$Headers http-data=[ :serialize to=json $Message ] $Url as-value; + } on-error={ + $LogPrint info $0 ("Failed sending Gotify notification! Queuing..."); + + :if ([ :typeof $GotifyQueue ] = "nothing") do={ + :set GotifyQueue ({}); + } + :set ($Message->"message") (($Notification->"message") . "\n" . \ + [ $SymbolForNotification "alarm-clock" ] . "This message was queued since " . \ + [ /system/clock/get date ] . " " . [ /system/clock/get time ] . " and may be obsolete."); + :set ($GotifyQueue->[ :len $GotifyQueue ]) \ + { url=$Url; headers=$Headers; message=$Message }; + :if ([ :len [ /system/scheduler/find where name="_FlushGotifyQueue" ] ] = 0) do={ + /system/scheduler/add name="_FlushGotifyQueue" interval=1m start-time=startup \ + on-event=(":global FlushGotifyQueue; \$FlushGotifyQueue;"); + } + } +} + +# purge the Gotify queue +:set PurgeGotifyQueue do={ + :global GotifyQueue; + + /system/scheduler/remove [ find where name="_FlushGotifyQueue" ]; + :set GotifyQueue; +} + +# send notification via Gotify - expects at least two string arguments +:set SendGotify do={ :do { + :global SendGotify2; + + $SendGotify2 ({ origin=$0; subject=$1; message=$2; link=$3; silent=$4 }); +} on-error={ + :global ExitError; $ExitError false $0; +} } + +# send notification via Gotify - expects one array argument +:set SendGotify2 do={ + :local Notification $1; + + :global NotificationFunctions; + + ($NotificationFunctions->"gotify") ("\$NotificationFunctions->\"gotify\"") $Notification; +} diff --git a/news-and-changes.rsc b/news-and-changes.rsc index 55b41650..a9a29049 100644 --- a/news-and-changes.rsc +++ b/news-and-changes.rsc @@ -61,6 +61,7 @@ 134="Enhanced 'mod/notification-telegram' and 'telegram-chat' to support topics in groups."; 135="Introduced helper function '\$GetTelegramChatId' for 'mod/notification-telegram' which helps retrieve information."; 136="Introduced script 'check-perpetual-license' to check for license state on CHR."; + 137="Added support to send notifications via Gotify (gotify.net)."; }; # Migration steps to be applied on script updates From 07541a3cbcacdc53c7108fabb17deb73e5c93bef Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Sat, 26 Apr 2025 01:18:40 +0200 Subject: [PATCH 16/18] update list of contributors --- CONTRIBUTIONS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTIONS.md b/CONTRIBUTIONS.md index 0b894531..5bf5d089 100644 --- a/CONTRIBUTIONS.md +++ b/CONTRIBUTIONS.md @@ -22,6 +22,7 @@ for details! * [Daniel Ziegenberg](mailto:daniel@ziegenberg.at) (@ziegenberg) * [Ignacio Serrano](mailto:ignic@ignic.com) (@ignic) * [Ilya Kulakov](mailto:kulakov.ilya@gmail.com) (@Kentzo) +* [Leonardo David Monteiro](mailto:leo@cub3.xyz) (@leosfsm) * [Michael Gisbers](mailto:michael@gisbers.de) (@mgisbers) * [Miquel Bonastre](mailto:mbonastre@yahoo.com) (@mbonastre) * @netravnen From fa83c76be17c6a6bb1472c7e1e7dacf20178397f Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Sat, 26 Apr 2025 00:54:46 +0200 Subject: [PATCH 17/18] doc/check-lte-firmware-upgrade: add missing reference for ntfy --- doc/check-lte-firmware-upgrade.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/check-lte-firmware-upgrade.md b/doc/check-lte-firmware-upgrade.md index a84e2ac2..a0c441e3 100644 --- a/doc/check-lte-firmware-upgrade.md +++ b/doc/check-lte-firmware-upgrade.md @@ -45,7 +45,8 @@ Configuration Also notification settings are required for [e-mail](mod/notification-email.md), [gotify](mod/notification-gotify.md), -[matrix](mod/notification-matrix.md) and/or +[matrix](mod/notification-matrix.md), +[ntfy](mod/notification-ntfy.md) and/or [telegram](mod/notification-telegram.md). See also From 154fb438002c0103eef88a207f0f86b417a86dda Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Sat, 3 May 2025 22:01:47 +0200 Subject: [PATCH 18/18] mod/notification-ntfy: drop unused variable --- mod/notification-ntfy.rsc | 1 - 1 file changed, 1 deletion(-) diff --git a/mod/notification-ntfy.rsc b/mod/notification-ntfy.rsc index aac6d6c1..2748c5b6 100644 --- a/mod/notification-ntfy.rsc +++ b/mod/notification-ntfy.rsc @@ -18,7 +18,6 @@ # flush ntfy queue :set FlushNtfyQueue do={ :do { :global NtfyQueue; - :global NtfyMessageIDs; :global IsFullyConnected; :global LogPrint;