Compare commits

..

20 commits

Author SHA1 Message Date
Ilya Kulakov
e98299927d
Merge 4d358fa0e9 into 154fb43800 2025-05-05 15:25:16 +02:00
Christian Hesse
154fb43800 mod/notification-ntfy: drop unused variable 2025-05-03 22:11:22 +02:00
Christian Hesse
fa83c76be1 doc/check-lte-firmware-upgrade: add missing reference for ntfy 2025-05-03 22:11:22 +02:00
Christian Hesse
07541a3cbc update list of contributors 2025-05-03 22:11:22 +02:00
Leonardo David Monteiro
0717ebfbd5 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 <mail@eworm.de>
2025-05-03 22:11:22 +02:00
Christian Hesse
507a520994 Merge branch 'external-links' into next 2025-04-29 10:53:26 +02:00
Christian Hesse
fe64918118 README: add disclaimer on external links 2025-04-29 10:53:26 +02:00
Christian Hesse
3822887ba2 doc/mod/notification-telegram: mark all external links 2025-04-24 23:24:53 +02:00
Christian Hesse
c69b13c879 doc/mod/notification-notify: mark all external links 2025-04-24 23:24:50 +02:00
Christian Hesse
183b16d83c doc/mod/notification-matrix: mark all external links 2025-04-24 23:24:47 +02:00
Christian Hesse
0eaefcdc72 doc/mod/notification-email: mark all external links 2025-04-24 23:24:43 +02:00
Christian Hesse
2fa044972c doc/log-forward: mark all external links 2025-04-24 23:24:39 +02:00
Christian Hesse
3788a3e286 doc/fw-addr-lists: mark all external links 2025-04-24 23:24:36 +02:00
Christian Hesse
34eac64f33 doc/check-routeros-update: mark all external links 2025-04-24 23:24:32 +02:00
Christian Hesse
4118f53aae doc/backup-partition: mark all external links 2025-04-24 23:24:28 +02:00
Christian Hesse
b12f8a3974 doc/backup-cloud: mark all external links 2025-04-24 23:24:25 +02:00
Christian Hesse
a1437a4c83 CONTRIBUTIONS: mark all external links 2025-04-24 23:24:25 +02:00
Christian Hesse
8328400e87 CERTIFICATES: mark all external links 2025-04-24 23:24:25 +02:00
Christian Hesse
158230070f BRANCHES: mark all external links 2025-04-24 23:24:25 +02:00
Christian Hesse
405c329f39 README: mark all external links 2025-04-24 23:24:25 +02:00
29 changed files with 315 additions and 37 deletions

View file

@ -13,7 +13,7 @@ Installing from branches
> ⚠️ **Warning**: Living on the edge? Great, read on! > ⚠️ **Warning**: Living on the edge? Great, read on!
> If not: Please use the `main` branch and leave this page! > 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 Development and experimental branches are used to provide early access
for specific changes. You can install scripts from these branches for specific changes. You can install scripts from these branches
for testing. for testing.

View file

@ -21,7 +21,7 @@ first step of [installation](README.md#the-long-way-in-detail) is importing
the certificate. the certificate.
The scripts can install additional certificates when required. This happens 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. as a fallback.
Get the certificate's CommonName 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 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 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 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 [git.eworm.de](https://git.eworm.de/) is available. Open that page in the
@ -74,6 +74,7 @@ See also
* [Download, import and update firewall address-lists](doc/fw-addr-lists.md) * [Download, import and update firewall address-lists](doc/fw-addr-lists.md)
* [Manage DNS and DoH servers from netwatch](doc/netwatch-dns.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 Matrix](doc/mod/notification-matrix.md)
* [Send notifications via Ntfy](doc/mod/notification-ntfy.md) * [Send notifications via Ntfy](doc/mod/notification-ntfy.md)

View file

@ -22,6 +22,7 @@ for details!
* [Daniel Ziegenberg](mailto:daniel@ziegenberg.at) (@ziegenberg) * [Daniel Ziegenberg](mailto:daniel@ziegenberg.at) (@ziegenberg)
* [Ignacio Serrano](mailto:ignic@ignic.com) (@ignic) * [Ignacio Serrano](mailto:ignic@ignic.com) (@ignic)
* [Ilya Kulakov](mailto:kulakov.ilya@gmail.com) (@Kentzo) * [Ilya Kulakov](mailto:kulakov.ilya@gmail.com) (@Kentzo)
* [Leonardo David Monteiro](mailto:leo@cub3.xyz) (@leosfsm)
* [Michael Gisbers](mailto:michael@gisbers.de) (@mgisbers) * [Michael Gisbers](mailto:michael@gisbers.de) (@mgisbers)
* [Miquel Bonastre](mailto:mbonastre@yahoo.com) (@mbonastre) * [Miquel Bonastre](mailto:mbonastre@yahoo.com) (@mbonastre)
* @netravnen * @netravnen
@ -31,7 +32,7 @@ for details!
## Donations ## Donations
Add yourself to the list, 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 * Abdul Mannan Abbasi
* Andrea Ruffini Perico * Andrea Ruffini Perico

View file

@ -10,13 +10,14 @@ RouterOS Scripts
![RouterOS Scripts Logo](logo.svg) ![RouterOS Scripts Logo](logo.svg)
[RouterOS](https://mikrotik.com/software) is the operating system developed [RouterOS ↗️](https://mikrotik.com/software) is the operating system developed
by [MikroTik](https://mikrotik.com/aboutus) for networking tasks. This by [MikroTik ↗️](https://mikrotik.com/aboutus) for networking tasks. This
repository holds a number of [scripts](https://wiki.mikrotik.com/wiki/Manual:Scripting) repository holds a number of [scripts ↗️](https://wiki.mikrotik.com/wiki/Manual:Scripting)
to manage RouterOS devices or extend their functionality. to manage RouterOS devices or extend their functionality.
*Use at your own risk*, pay attention to *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 Requirements
------------ ------------
@ -35,7 +36,7 @@ Specific scripts may require even newer RouterOS version.
> running RouterOS v6 switch to `routeros-v6` branch! > running RouterOS v6 switch to `routeros-v6` branch!
Starting with RouterOS 7.17 the 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 has been extended to give more fine-grained control over what features are
available. You need to enable `scheduler` and `fetch` at least, specific available. You need to enable `scheduler` and `fetch` at least, specific
scripts may require additional features. scripts may require additional features.
@ -61,9 +62,9 @@ First time users should take the long way below.
### Live presentation ### Live presentation
Want to see it in action? I've had a presentation [Repository based 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 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 > ⚠️ **Warning**: Some details changed. So see the presentation, then follow
> the steps below for up-to-date commands. > the steps below for up-to-date commands.
@ -83,7 +84,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 want to be safe download with your workstations's browser and transfer the
file to your MikroTik device. 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. Then we import the certificate.
@ -194,7 +195,7 @@ Scheduler and events
-------------------- --------------------
Most scripts are designed to run regularly from 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 added `check-routeros-update`, so let's run it daily to make sure not to
miss an update. miss an update.
@ -267,6 +268,7 @@ Available modules
* [Inspect variables](doc/mod/inspectvar.md) (`mod/inspectvar`) * [Inspect variables](doc/mod/inspectvar.md) (`mod/inspectvar`)
* [IP address calculation](doc/mod/ipcalc.md) (`mod/ipcalc`) * [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 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 Matrix](doc/mod/notification-matrix.md) (`mod/notification-matrix`)
* [Send notifications via Ntfy](doc/mod/notification-ntfy.md) (`mod/notification-ntfy`) * [Send notifications via Ntfy](doc/mod/notification-ntfy.md) (`mod/notification-ntfy`)
* [Send notifications via Telegram](doc/mod/notification-telegram.md) (`mod/notification-telegram`) * [Send notifications via Telegram](doc/mod/notification-telegram.md) (`mod/notification-telegram`)
@ -328,7 +330,7 @@ Possibly a scheduler and other configuration has to be removed as well.
Contact 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) [![RouterOS Scripts Telegram Group](README.d/telegram-group.avif)](https://t.me/routeros_scripts)
@ -352,7 +354,7 @@ at github.
This project is developed in private spare time and usage is free of charge 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 for you. If you like the scripts and think this is of value for you or your
business please consider to 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) [![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)
@ -371,6 +373,21 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
[GNU General Public License](COPYING.md) for more details. [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 Upstream
-------- --------

View file

@ -17,7 +17,7 @@ Description
----------- -----------
This script uploads 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 > ⚠️ **Warning**: The used command can hit errors that a script can with
> workaround only. A notification *should* be sent anyway. But it can result > workaround only. A notification *should* be sent anyway. But it can result
@ -49,6 +49,7 @@ The configuration goes to `global-config-overlay`, these are the parameters:
Also notification settings are required for Also notification settings are required for
[e-mail](mod/notification-email.md), [e-mail](mod/notification-email.md),
[gotify](mod/notification-gotify.md),
[matrix](mod/notification-matrix.md), [matrix](mod/notification-matrix.md),
[ntfy](mod/notification-ntfy.md) and/or [ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md). [telegram](mod/notification-telegram.md).

View file

@ -17,7 +17,7 @@ Description
----------- -----------
This script saves the current configuration to fallback 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 It can also copy-over the RouterOS installation when run interactively
or just before a feature update. or just before a feature update.

View file

@ -55,6 +55,7 @@ The configuration goes to `global-config-overlay`, these are the parameters:
Also notification settings are required for Also notification settings are required for
[e-mail](mod/notification-email.md), [e-mail](mod/notification-email.md),
[gotify](mod/notification-gotify.md),
[matrix](mod/notification-matrix.md), [matrix](mod/notification-matrix.md),
[ntfy](mod/notification-ntfy.md) and/or [ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md). [telegram](mod/notification-telegram.md).

View file

@ -51,6 +51,7 @@ subject alternative name (aka *Subject Alt Name* or *SAN*) can be used.
Also notification settings are required for Also notification settings are required for
[e-mail](mod/notification-email.md), [e-mail](mod/notification-email.md),
[gotify](mod/notification-gotify.md),
[matrix](mod/notification-matrix.md), [matrix](mod/notification-matrix.md),
[ntfy](mod/notification-ntfy.md) and/or [ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md). [telegram](mod/notification-telegram.md).

View file

@ -113,6 +113,7 @@ The configuration goes to `global-config-overlay`, these are the parameters:
Also notification settings are required for Also notification settings are required for
[e-mail](mod/notification-email.md), [e-mail](mod/notification-email.md),
[gotify](mod/notification-gotify.md),
[matrix](mod/notification-matrix.md), [matrix](mod/notification-matrix.md),
[ntfy](mod/notification-ntfy.md) and/or [ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md). [telegram](mod/notification-telegram.md).

View file

@ -44,7 +44,9 @@ Configuration
Also notification settings are required for Also notification settings are required for
[e-mail](mod/notification-email.md), [e-mail](mod/notification-email.md),
[matrix](mod/notification-matrix.md) and/or [gotify](mod/notification-gotify.md),
[matrix](mod/notification-matrix.md),
[ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md). [telegram](mod/notification-telegram.md).
See also See also

View file

@ -41,6 +41,7 @@ Configuration
No extra configuration is required for this script, but notification No extra configuration is required for this script, but notification
settings are required for settings are required for
[e-mail](mod/notification-email.md), [e-mail](mod/notification-email.md),
[gotify](mod/notification-gotify.md),
[matrix](mod/notification-matrix.md), [matrix](mod/notification-matrix.md),
[ntfy](mod/notification-ntfy.md) and/or [ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md). [telegram](mod/notification-telegram.md).

View file

@ -30,8 +30,8 @@ automatically is supported.
> ⚠️ **Warning**: Installing updates is important from a security point > ⚠️ **Warning**: Installing updates is important from a security point
> of view. At the same time it can be source of serve breakage. So test > of view. At the same time it can be source of serve breakage. So test
> versions in lab and read > versions in lab and read
> [changelog](https://mikrotik.com/download/changelogs/) and > [changelog ↗️](https://mikrotik.com/download/changelogs/) and
> [forum](https://forum.mikrotik.com/viewforum.php?f=21) before deploying > [forum ↗️](https://forum.mikrotik.com/viewforum.php?f=21) before deploying
> to your production environment! Automatic updates should be handled > to your production environment! Automatic updates should be handled
> with care! > with care!
@ -73,6 +73,7 @@ The configuration goes to `global-config-overlay`, these are the parameters:
Also notification settings are required for Also notification settings are required for
[e-mail](mod/notification-email.md), [e-mail](mod/notification-email.md),
[gotify](mod/notification-gotify.md),
[matrix](mod/notification-matrix.md), [matrix](mod/notification-matrix.md),
[ntfy](mod/notification-ntfy.md) and/or [ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md). [telegram](mod/notification-telegram.md).

View file

@ -54,6 +54,7 @@ entries are to be added.
Also notification settings are required for Also notification settings are required for
[e-mail](mod/notification-email.md), [e-mail](mod/notification-email.md),
[gotify](mod/notification-gotify.md),
[matrix](mod/notification-matrix.md), [matrix](mod/notification-matrix.md),
[ntfy](mod/notification-ntfy.md) and/or [ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md). [telegram](mod/notification-telegram.md).

View file

@ -79,6 +79,7 @@ For legacy local interface:
Also notification settings are required for Also notification settings are required for
[e-mail](mod/notification-email.md), [e-mail](mod/notification-email.md),
[gotify](mod/notification-gotify.md),
[trix](mod/notification-matrix.md), [trix](mod/notification-matrix.md),
[ntfy](mod/notification-ntfy.md) and/or [ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md). [telegram](mod/notification-telegram.md).

View file

@ -19,10 +19,10 @@ Description
This script downloads, imports and updates firewall address-lists. Its main This script downloads, imports and updates firewall address-lists. Its main
purpose is to block attacking ip addresses, spam hosts, command-and-control purpose is to block attacking ip addresses, spam hosts, command-and-control
servers and similar malicious entities. The default configuration contains a servers and similar malicious entities. The default configuration contains a
[collective list by GitHub user @stamparm](https://github.com/stamparm/ipsum), [collective list by GitHub user @stamparm ↗️](https://github.com/stamparm/ipsum),
lists from [dshield.org](https://dshield.org/) and lists from [dshield.org ↗️](https://dshield.org/) and
[blocklist.de](https://www.blocklist.de/), and lists from [blocklist.de ↗️](https://www.blocklist.de/), and lists from
[spamhaus.org](https://spamhaus.org/) are prepared. [spamhaus.org ↗️](https://spamhaus.org/) are prepared.
The address-lists are updated in place, so after initial import you will not The address-lists are updated in place, so after initial import you will not
see situation when the lists are not populated. see situation when the lists are not populated.

View file

@ -22,15 +22,15 @@ server (see `/system/logging`). This has some limitation, however:
* does not work early after boot if network connectivity is not * does not work early after boot if network connectivity is not
yet established, or breaks intermittently yet established, or breaks intermittently
* lots of messages generate a flood of mails * 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: The script works around the limitations, for example it does:
* read from `/log`, including messages from early boot * read from `/log`, including messages from early boot
* skip multi-repeated messages * skip multi-repeated messages
* rate-limit itself to mitigate flooding * rate-limit itself to mitigate flooding
* forward via notification (which includes *e-mail*, *Matrix*, *Ntfy* and * forward via notification (which includes *e-mail*, *Gotify*, *Matrix*,
*Telegram* when installed and configured, see below) *Ntfy* and *Telegram* when installed and configured, see below)
It is intended to be run periodically from scheduler, then collects new It is intended to be run periodically from scheduler, then collects new
log messages and forwards them via notification. log messages and forwards them via notification.
@ -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. > your local `global-config-overlay` and modify it to your specific needs.
These patterns are matched as 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` To forward **all** (ignoring severity) log messages with topics `account`
(which includes user logins) and `dhcp` you need something like: (which includes user logins) and `dhcp` you need something like:
@ -80,6 +80,7 @@ To forward **all** (ignoring severity) log messages with topics `account`
Also notification settings are required for Also notification settings are required for
[e-mail](mod/notification-email.md), [e-mail](mod/notification-email.md),
[gotify](mod/notification-gotify.md),
[matrix](mod/notification-matrix.md), [matrix](mod/notification-matrix.md),
[ntfy](mod/notification-ntfy.md) and/or [ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md). [telegram](mod/notification-telegram.md).

View file

@ -32,7 +32,7 @@ Configuration
------------- -------------
Set up your device's 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 Also make sure the device has correct time configured, best is to set up
the ntp client. the ntp client.
@ -79,6 +79,7 @@ function available:
See also See also
-------- --------
* [Send notifications via Gotify](notification-gotify.md)
* [Send notifications via Matrix](notification-matrix.md) * [Send notifications via Matrix](notification-matrix.md)
* [Send notifications via Ntfy](notification-ntfy.md) * [Send notifications via Ntfy](notification-ntfy.md)
* [Send notifications via Telegram](notification-telegram.md) * [Send notifications via Telegram](notification-telegram.md)

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -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)

View file

@ -17,7 +17,7 @@ Description
----------- -----------
This module adds support for sending notifications via 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. make sure notifications are not lost on failure but sent later.
Requirements and installation Requirements and installation
@ -131,6 +131,7 @@ See also
* [Certificate name from browser](../../CERTIFICATES.md) * [Certificate name from browser](../../CERTIFICATES.md)
* [Send notifications via e-mail](notification-email.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 Ntfy](notification-ntfy.md)
* [Send notifications via Telegram](notification-telegram.md) * [Send notifications via Telegram](notification-telegram.md)

View file

@ -17,7 +17,7 @@ Description
----------- -----------
This module adds support for sending notifications via 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. notifications are not lost on failure but sent later.
Requirements and installation Requirements and installation
@ -28,7 +28,7 @@ Just install the module:
$ScriptInstallUpdate mod/notification-ntfy; $ScriptInstallUpdate mod/notification-ntfy;
Also install the Ntfy app on your mobile device or use the 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 Configuration
------------- -------------
@ -90,6 +90,7 @@ See also
* [Certificate name from browser](../../CERTIFICATES.md) * [Certificate name from browser](../../CERTIFICATES.md)
* [Send notifications via e-mail](notification-email.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 Matrix](notification-matrix.md)
* [Send notifications via Telegram](notification-telegram.md) * [Send notifications via Telegram](notification-telegram.md)

View file

@ -17,7 +17,7 @@ Description
----------- -----------
This module adds support for sending notifications via 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. notifications are not lost on failure but sent later.
Requirements and installation Requirements and installation
@ -33,7 +33,7 @@ and create an account.
Configuration 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 your own bot:
![create new bot](notification-telegram.d/newbot.avif) ![create new bot](notification-telegram.d/newbot.avif)
@ -102,7 +102,7 @@ Tips & Tricks
### Set a profile photo ### Set a profile photo
You can use a profile photo for your bot to make it recognizable. Open the 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) ![set profile photo](notification-telegram.d/setuserpic.avif)
@ -115,6 +115,7 @@ See also
* [Chat with your router and send commands via Telegram bot](../telegram-chat.md) * [Chat with your router and send commands via Telegram bot](../telegram-chat.md)
* [Send notifications via e-mail](notification-email.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 Matrix](notification-matrix.md)
* [Send notifications via Ntfy](notification-ntfy.md) * [Send notifications via Ntfy](notification-ntfy.md)

View file

@ -47,6 +47,7 @@ The hosts to be checked have to be added to netwatch with specific comment:
Also notification settings are required for Also notification settings are required for
[e-mail](mod/notification-email.md), [e-mail](mod/notification-email.md),
[gotify](mod/notification-gotify.md),
[matrix](mod/notification-matrix.md), [matrix](mod/notification-matrix.md),
[ntfy](mod/notification-ntfy.md) and/or [ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md). [telegram](mod/notification-telegram.md).

View file

@ -56,6 +56,7 @@ The configuration goes to `global-config-overlay`, this is the only parameter:
Notification settings are required for Notification settings are required for
[e-mail](mod/notification-email.md), [e-mail](mod/notification-email.md),
[gotify](mod/notification-gotify.md),
[matrix](mod/notification-matrix.md), [matrix](mod/notification-matrix.md),
[ntfy](mod/notification-ntfy.md) and/or [ntfy](mod/notification-ntfy.md) and/or
[telegram](mod/notification-telegram.md). [telegram](mod/notification-telegram.md).

View file

@ -63,6 +63,12 @@
:global NtfyServerToken ""; :global NtfyServerToken "";
:global NtfyTopic ""; :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 # It is possible to override e-mail, Telegram, Matrix and Ntfy setting
# for every script. This is done in arrays, where 'Override' is appended # for every script. This is done in arrays, where 'Override' is appended
# to the variable name, like this: # to the variable name, like this:

View file

@ -15,7 +15,7 @@
# Git commit id & info, expected configuration version # Git commit id & info, expected configuration version
:global CommitId "unknown"; :global CommitId "unknown";
:global CommitInfo "unknown"; :global CommitInfo "unknown";
:global ExpectedConfigVersion 136; :global ExpectedConfigVersion 137;
# global variables not to be changed by user # global variables not to be changed by user
:global GlobalFunctionsReady false; :global GlobalFunctionsReady false;

139
mod/notification-gotify.rsc Normal file
View file

@ -0,0 +1,139 @@
#!rsc by RouterOS
# RouterOS script: mod/notification-gotify
# Copyright (c) 2013-2025 Christian Hesse <mail@eworm.de>
# Leonardo David Monteiro <leo@cub3.xyz>
# 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;
}

View file

@ -18,7 +18,6 @@
# flush ntfy queue # flush ntfy queue
:set FlushNtfyQueue do={ :do { :set FlushNtfyQueue do={ :do {
:global NtfyQueue; :global NtfyQueue;
:global NtfyMessageIDs;
:global IsFullyConnected; :global IsFullyConnected;
:global LogPrint; :global LogPrint;

View file

@ -61,6 +61,7 @@
134="Enhanced 'mod/notification-telegram' and 'telegram-chat' to support topics in groups."; 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."; 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."; 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 # Migration steps to be applied on script updates