apcupsd: Update email scripts to work with dma

- The standard email scripts supllied with apcupsd are coded on the basis that sendmail
   is being used. The format of the email information in those scripts does not work with
   the dma mail system implemented in IPFire.
- The scripts provided in the config/apcupsd directory have been updated to work with
   dma. The scripts have been confirmed to work with my production system that is using
   a UPS.
- This patch will replace the standard apcupsd scripts with the ones tailored for IPFire.
- If any existing users have modified their scripts to already work with dma then their
   versions will be saved in their backup.
- The apcupsd-3.14.14-2.ipfire package created in the build with the above changes has
   been installed on a vm system and confirmed to provide the IPFire tailored scripts.
- The lfs change is the addition of the copying of the scripts to the /etc/apcupsd
   directory.
- No change to the rootfile as the scripts names are the same.
- The only thing a user will need to do is to ensure the IPFire email system is enabled,
   configure and confirmed working. Then valid FROM and TO email addresses need to be
   added to each script.
- Once this patch submission is accepted then I will do an update to the apcupsd IPFire
   documentation page to describe these scripts and how to update the email addresses.

Tested-by: Adolf Belka <adolf.belka@ipfire.org>
Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
This commit is contained in:
Adolf Belka
2024-06-21 18:04:46 +02:00
committed by Michael Tremer
parent 5b24b5559a
commit 5175a5f19e
6 changed files with 130 additions and 7 deletions

24
config/apcupsd/changeme Normal file
View File

@@ -0,0 +1,24 @@
#!/bin/sh
#
# This shell script if placed in /etc/apcupsd
# will be called by /etc/apcupsd/apccontrol when apcupsd
# detects that the battery should be replaced.
# We send an email message to root to notify him.
#
FROM="enter from email address"
TO="enter to email address"
HOSTNAME=`hostname`
MSG="$HOSTNAME Battery needs changing now on UPS $1"
#
(
echo From: $FROM
echo To: $TO
echo Subject: $MSG
echo " "
echo "$MSG"
echo " "
echo -ne $(echo "\r\n"; while read line; do echo "$line\r\n"; done < <(echo "$(/sbin/apcaccess status)"))
) | sudo -u nobody /usr/sbin/sendmail -t -f $FROM
exit 0

View File

@@ -0,0 +1,23 @@
#!/bin/sh
#
# This shell script if placed in /etc/apcupsd
# will be called by /etc/apcupsd/apccontrol when apcupsd
# loses contact with the UPS (i.e. the serial connection is not responding).
# We send an email message to root to notify him.
#
FROM="enter from email address"
TO="enter to email address"
HOSTNAME=`hostname`
MSG="$HOSTNAME Communications with UPS $1 lost"
(
echo From: $FROM
echo To: $TO
echo Subject: $MSG
echo " "
echo "$MSG"
echo " "
echo -ne $(echo "\r\n"; while read line; do echo "$line\r\n"; done < <(echo "$(/sbin/apcaccess status)"))
) | sudo -u nobody /usr/sbin/sendmail -t -f $FROM
exit 0

24
config/apcupsd/commok Normal file
View File

@@ -0,0 +1,24 @@
#!/bin/sh
#
# This shell script if placed in /etc/apcupsd
# will be called by /etc/apcupsd/apccontrol when apcupsd
# restores contact with the UPS (i.e. the serial connection is restored).
# We send an email message to root to notify him.
#
FROM="enter from email address"
TO="enter to email address"
HOSTNAME=`hostname`
MSG="$HOSTNAME Communications with UPS $1 restored"
#
(
echo From: $FROM
echo To: $TO
echo Subject: $MSG
echo " "
echo "$MSG"
echo " "
echo -ne $(echo "\r\n"; while read line; do echo "$line\r\n"; done < <(echo "$(/sbin/apcaccess status)"))
) | sudo -u nobody /usr/sbin/sendmail -t -f $FROM
exit 0

24
config/apcupsd/offbattery Normal file
View File

@@ -0,0 +1,24 @@
#!/bin/sh
#
# This shell script if placed in /etc/apcupsd
# will be called by /etc/apcupsd/apccontrol when the
# UPS goes back on to the mains after a power failure.
# We send an email message to root to notify him.
#
FROM="enter from email address"
TO="enter to email address"
HOSTNAME=`hostname`
MSG="$HOSTNAME Power has returned on UPS $1"
#
(
echo From: $FROM
echo To: $TO
echo Subject: $MSG
echo " "
echo "$MSG"
echo " "
echo -ne $(echo "\r\n"; while read line; do echo "$line\r\n"; done < <(echo "$(/sbin/apcaccess status)"))
) | sudo -u nobody /usr/sbin/sendmail -t -f $FROM
exit 0

24
config/apcupsd/onbattery Normal file
View File

@@ -0,0 +1,24 @@
#!/bin/sh
#
# This shell script if placed in /etc/apcupsd
# will be called by /etc/apcupsd/apccontrol when the UPS
# goes on batteries.
# We send an email message to root to notify him.
#
FROM="enter from email address"
TO="enter to email address"
HOSTNAME=`hostname`
MSG="$HOSTNAME Power Failure on UPS $1"
#
(
echo From: $FROM
echo To: $TO
echo Subject: $MSG
echo " "
echo "$MSG"
echo " "
echo -ne $(echo "\r\n"; while read line; do echo "$line\r\n"; done < <(echo "$(/sbin/apcaccess status)"))
) | sudo -u nobody /usr/sbin/sendmail -t -f $FROM
exit 0

View File

@@ -1,7 +1,7 @@
###############################################################################
# #
# IPFire.org - A linux based firewall #
# Copyright (C) 2007-2023 IPFire Team <info@ipfire.org> #
# Copyright (C) 2007-2024 IPFire Team <info@ipfire.org> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
@@ -34,7 +34,7 @@ DL_FROM = $(URL_IPFIRE)
DIR_APP = $(DIR_SRC)/$(THISAPP)
TARGET = $(DIR_INFO)/$(THISAPP)
PROG = apcupsd
PAK_VER = 11
PAK_VER = 2
DEPS =
@@ -82,14 +82,18 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
$(UPDATE_AUTOMAKE)
cd $(DIR_APP) && ./configure --prefix=/usr --enable-usb --enable-cgi \
--with-cgi-bin=/srv/web/ipfire/cgi-bin
cd $(DIR_APP) && ./configure \
--prefix=/usr \
--enable-usb \
--enable-cgi \
--with-cgi-bin=/srv/web/ipfire/cgi-bin
cd $(DIR_APP) && make $(MAKETUNING)
cd $(DIR_APP) && make install
#install initscripts
# Copy the IPFire specific scripts for apccontrol to use.
# These have been modified to be able to use the dma mail agent in IPFire.
cp -rf $(DIR_SRC)/config/apcupsd/* /etc/apcupsd/
# install initscripts
$(call INSTALL_INITSCRIPTS,$(SERVICES))
ln -sf ../init.d/apcupsd /etc/rc.d/rc3.d/S65apcupsd
ln -sf ../init.d/apcupsd /etc/rc.d/rc0.d/K35apcupsd
ln -sf ../init.d/apcupsd /etc/rc.d/rc6.d/K35apcupsd