Skip to content

feat(alerts): add Matrix alert provider#4901

Open
dgibbs64 wants to merge 1 commit intodevelopfrom
feat/matrix-alerts
Open

feat(alerts): add Matrix alert provider#4901
dgibbs64 wants to merge 1 commit intodevelopfrom
feat/matrix-alerts

Conversation

@dgibbs64
Copy link
Copy Markdown
Member

Description

Adds Matrix as a first-class alert provider for LinuxGSM.

This re-implements and modernizes the old proposal in #3507:

  • adds new module alert_matrix.sh in lgsm/modules/
  • wires Matrix dispatch and TEST-ALERT validation in alert.sh
  • adds Matrix config defaults to all server _default.cfg files

Matrix implementation details

  • uses Matrix Client API v3
  • sends access token via Authorization: Bearer header (not query string)
  • supports homeserver values with or without URL scheme
  • URL-encodes room identifiers safely

Config

matrixalert="off"
matrixhomeserver="matrix.org"
matrixtoken="accesstoken"
matrixroom=""

Testing

  • bash -n lgsm/modules/alert_matrix.sh lgsm/modules/alert.sh
  • spot-checked Matrix config insertion in multiple _default.cfg files

Copilot AI review requested due to automatic review settings April 20, 2026 05:40
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds Matrix as an alert provider to LinuxGSM, wiring it into the main alert dispatch flow and exposing configuration defaults across server configs.

Changes:

  • Introduces a new alert_matrix.sh module that sends messages via the Matrix Client API v3.
  • Adds Matrix handling and TEST-ALERT validation paths in alert.sh.
  • Adds default Matrix alert configuration keys to many server _default.cfg files.

Reviewed changes

Copilot reviewed 141 out of 141 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
lgsm/modules/alert_matrix.sh New Matrix alert sender implementation (builds message, posts to Matrix Client API).
lgsm/modules/alert.sh Wires Matrix provider into alert dispatch + TEST-ALERT validation messages.
lgsm/config-default/config-lgsm/zpsserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/zmrserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/xntserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/wurmserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/wmcserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/wfserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/wetserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/vsserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/vpmcserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/vintsserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/vhserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/utserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/ut99server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/ut3server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/ut2k4server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/untserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/twserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/tuserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/tsserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/ts3server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/tiserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/tfserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/tfcserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/tf2server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/tf2cserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/terrariaserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/svenserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/stserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/stnserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/squadserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/squad44server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/solserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/sof2server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/smserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/sfserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/sfcserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/sdtdserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/scpslsmserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/scpslserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/sbserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/sbotsserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/sampserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/rwserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/rustserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/rtcwserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/roserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/ricochetserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/qwserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/qlserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/q4server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/q3server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/q2server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/pzserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/pwserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/pvrserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/pvkiiserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/pmcserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/pcserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/pc2server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/opforserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/onsetserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/ohdserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/nsserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/ns2server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/ns2cserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/nmrihserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/necserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/ndserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/mtaserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/momserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/mohaaserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/mhserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/mcserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/mcbserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/l4dserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/l4d2server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/kfserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/kf2server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/jk2server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/jc3server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/jc2server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/iosserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/inssserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/insserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/hzserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/hwserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/hldmsserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/hldmserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/hl2dmserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/hcuserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/gmodserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/fofserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/fctrserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/ets2server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/etlserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/emserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/ecoserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/dysserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/dstserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/doiserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/dodsserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/dodserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/dodrserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/dmcserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/dayzserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/dabserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/ctserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/cssserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/csserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/csgoserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/csczserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/cs2server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/colserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/codwawserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/coduoserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/codserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/cod4server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/cod2server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/cmwserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/ckserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/ccserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/btserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/btlserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/bsserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/boserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/bmdmserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/bfvserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/bf1942server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/bdserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/bbserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/bb2server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/avserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/atsserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/armarserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/arma3server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/arkserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/ahlserver/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/ahl2server/_default.cfg Adds default Matrix alert config entries.
lgsm/config-default/config-lgsm/acserver/_default.cfg Adds default Matrix alert config entries.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +55 to +59
matrixsend=$(curl --connect-timeout 10 -sS -X POST \
-H "Authorization: Bearer ${matrixtoken}" \
-H "Content-Type: application/json" \
-d "${json}" \
"${matrixurl}")
Copy link

Copilot AI Apr 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

curl here uses -sS but not -L/--location, while other alert providers use -sSL to follow redirects. Matrix homeserver deployments can redirect (e.g., http→https or reverse-proxy routing), which would cause a false failure even though the endpoint is reachable. Consider adding -L for consistency and better compatibility.

Copilot uses AI. Check for mistakes.
Comment thread lgsm/modules/alert.sh
Comment on lines +382 to +384
if [ "${matrixalert}" == "on" ] && [ -n "${matrixtoken}" ] && [ -n "${matrixroom}" ]; then
alert_matrix.sh
elif [ "${matrixalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then
Copy link

Copilot AI Apr 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

alert.sh calls alert_matrix.sh, but there is no corresponding wrapper function in lgsm/modules/core_modules.sh (unlike alert_discord.sh, alert_ntfy.sh, etc.). As a result, this call is likely to fail at runtime because Bash will try to execute an external command named alert_matrix.sh instead of fetching/sourcing the module via fn_fetch_module. Add an alert_matrix.sh() entry to core_modules.sh (or adjust the invocation to match how other modules are loaded).

Copilot uses AI. Check for mistakes.
Comment thread lgsm/modules/alert.sh
Comment on lines +382 to +388
if [ "${matrixalert}" == "on" ] && [ -n "${matrixtoken}" ] && [ -n "${matrixroom}" ]; then
alert_matrix.sh
elif [ "${matrixalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then
fn_print_warn_nl "Matrix alerts not enabled"
fn_script_log_warn "Matrix alerts not enabled"
elif [ -z "${matrixhomeserver}" ] && [ "${commandname}" == "TEST-ALERT" ]; then
fn_print_error_nl "Matrix homeserver not set"
Copy link

Copilot AI Apr 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Matrix dispatch condition checks matrixtoken and matrixroom but not matrixhomeserver. If matrixalert="on" and token/room are set while matrixhomeserver is empty, alert_matrix.sh will build an invalid base URL and the send will fail (and TEST-ALERT won’t catch it because the send path runs first). Include a non-empty matrixhomeserver check in the initial if (or set a safe default in the module) and ensure TEST-ALERT validates it before attempting to send.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants