55 lines
1.6 KiB
Nix
55 lines
1.6 KiB
Nix
{ config, pkgs, ... }:
|
|
|
|
let
|
|
systemd_notifier = pkgs.writeScript "systemd-email-notify.sh" ''
|
|
#!${pkgs.bash}/bin/bash
|
|
|
|
# The failing service name is passed as the first argument
|
|
UNIT=$1
|
|
|
|
# 1. Send Technical Email to Admin
|
|
ADMIN_EMAIL="${config.numbus.mail.adminAddress}"
|
|
SUBJECT="Numbus Server Alert: Service $UNIT Failed"
|
|
|
|
# Retrieve recent logs for context
|
|
LOGS=$(journalctl -u "$UNIT" -n 20 --no-pager)
|
|
|
|
TECH_BODY="
|
|
Systemd Service Failure Alert:
|
|
Server owner: ${config.numbus.owner}
|
|
Service: $UNIT
|
|
|
|
Recent Logs:
|
|
$LOGS
|
|
"
|
|
printf "Subject: [ADMIN] $SUBJECT\n\n$TECH_BODY" | /run/wrappers/bin/sendmail -t "$ADMIN_EMAIL"
|
|
|
|
# 2. Send Friendly Email to Owner
|
|
USER_EMAIL="${config.numbus.mail.userAddress}"
|
|
OWNER_NAME="${config.numbus.owner}"
|
|
|
|
FRIENDLY_BODY="Cher/Chère $OWNER_NAME,
|
|
|
|
Votre serveur a détecté une défaillance du service $UNIT.
|
|
Le système a tenté de gérer l'erreur, mais une intervention peut être nécessaire.
|
|
|
|
Votre administrateur a été notifié de cet incident avec les détails techniques nécessaires.
|
|
Il interviendra si une action manuelle est requise.
|
|
|
|
Merci de votre confiance,
|
|
L'équipe de support,
|
|
Numbus-Server."
|
|
|
|
printf "Subject: [Alerte] Erreur sur votre serveur Numbus\n\n$FRIENDLY_BODY" | /run/wrappers/bin/sendmail -t "$USER_EMAIL"
|
|
'';
|
|
in
|
|
{
|
|
systemd.services."service-failure-notify@" = {
|
|
description = "Email notification for failed service %i";
|
|
onFailure = [ ];
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
ExecStart = "${systemd_notifier} %i";
|
|
};
|
|
};
|
|
} |