diff --git a/config.h.cmake b/config.h.cmake index 2a4fe035a..cc80a2e04 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -7,6 +7,7 @@ #cmakedefine HAVE_VFORK #define ICINGA_PREFIX "${CMAKE_INSTALL_PREFIX}" +#define ICINGA_SYSCONFDIR "${CMAKE_INSTALL_FULL_SYSCONFDIR}" #define ICINGA_LOCALSTATEDIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}" #define ICINGA_PKGDATADIR "${CMAKE_INSTALL_FULL_DATADIR}/icinga2" diff --git a/doc/4.2-global-variables.md b/doc/4.2-global-variables.md index 247db3c15..becc1de5e 100644 --- a/doc/4.2-global-variables.md +++ b/doc/4.2-global-variables.md @@ -1,10 +1,11 @@ -## Global Variables +## Global Variables Icinga 2 provides a number of special global variables: Variable |Description --------------------------|------------------- IcingaPrefixDir |**Read-only.** Contains the installation prefix that was specified with cmake -DCMAKE_INSTALL_PREFIX. Defaults to /usr/local +IcingaSysconfDir |**Read-only.** Contains the path of the sysconf directory. Defaults to IcingaPrefixDir + "/etc". IcingaLocalStateDir |**Read-only.** Contains the path of the local state directory. Defaults to IcingaPrefixDir + "/var". IcingaPkgDataDir |**Read-only.** Contains the path of the package data directory. Defaults to IcingaPrefixDir + "/share/icinga2". IcingaStatePath |**Read-write.** Contains the path of the Icinga 2 state file. Defaults to IcingaLocalStateDir + "/lib/icinga2/icinga2.state". diff --git a/etc/CMakeLists.txt b/etc/CMakeLists.txt index 864350f9f..00c07c9c2 100644 --- a/etc/CMakeLists.txt +++ b/etc/CMakeLists.txt @@ -41,6 +41,7 @@ install_if_not_exists(icinga2/features-available/notification.conf ${CMAKE_INSTA install_if_not_exists(icinga2/features-available/perfdata.conf ${CMAKE_INSTALL_SYSCONFDIR}/icinga2/features-available) install_if_not_exists(icinga2/features-available/statusdata.conf ${CMAKE_INSTALL_SYSCONFDIR}/icinga2/features-available) install_if_not_exists(icinga2/features-available/syslog.conf ${CMAKE_INSTALL_SYSCONFDIR}/icinga2/features-available) +install_if_not_exists(icinga2/scripts/mail-notification.sh ${CMAKE_INSTALL_SYSCONFDIR}/icinga2/scripts) install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_SYSCONFDIR}/icinga2/features-enabled\")") install(CODE "execute_process(COMMAND \"${CMAKE_COMMAND}\" -E create_symlink ../features-available/checker.conf \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_SYSCONFDIR}/icinga2/features-enabled/checker.conf\")") diff --git a/etc/icinga2/conf.d/notifications.conf b/etc/icinga2/conf.d/notifications.conf index 9f58e558f..36013c512 100644 --- a/etc/icinga2/conf.d/notifications.conf +++ b/etc/icinga2/conf.d/notifications.conf @@ -22,27 +22,21 @@ template Notification "mail-notification" { } object NotificationCommand "mail-service-notification" inherits "plugin-notification-command" { - command = [ - "/usr/bin/printf", - "\"%b\"", - {{{\"***** Icinga ***** + command = [ (IcingaSysconfDir + "/icinga2/scripts/mail-notification.sh") ], - Notification Type: $NOTIFICATIONTYPE$ - - Service: $SERVICEDESC$ - Host: $HOSTALIAS$ - Address: $HOSTADDRESS$ - State: $SERVICESTATE$ - - Date/Time: $LONGDATETIME$ - - Additional Info: $SERVICEOUTPUT$ - - Comment: [$NOTIFICATIONAUTHORNAME$] $NOTIFICATIONCOMMENT$\"}}}, - "/bin/mail", - "-s", - "\"$NOTIFICATIONTYPE$ - $HOSTDISPLAYNAME$ - $SERVICEDISPLAYNAME$ is $SERVICESTATE$\"", - "$USEREMAIL$" + export_macros = [ + "NOTIFICATIONTYPE", + "SERVICEDESC", + "HOSTALIAS", + "HOSTADDRESS", + "SERVICESTATE", + "LONGDATETIME", + "SERVICEOUTPUT", + "NOTIFICATIONAUTHORNAME", + "NOTIFICATIONCOMMENT", + "HOSTDISPLAYNAME", + "SERVICEDISPLAYNAME", + "USEREMAIL" ] } diff --git a/etc/icinga2/scripts/mail-notification.sh b/etc/icinga2/scripts/mail-notification.sh new file mode 100755 index 000000000..803892dc0 --- /dev/null +++ b/etc/icinga2/scripts/mail-notification.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +template=$(cat <