- 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 --- config/apcupsd/changeme | 24 ++++++++++++++++++++++++ config/apcupsd/commfailure | 23 +++++++++++++++++++++++ config/apcupsd/commok | 24 ++++++++++++++++++++++++ config/apcupsd/offbattery | 24 ++++++++++++++++++++++++ config/apcupsd/onbattery | 24 ++++++++++++++++++++++++ lfs/apcupsd | 18 +++++++++++------- 6 files changed, 130 insertions(+), 7 deletions(-) create mode 100644 config/apcupsd/changeme create mode 100644 config/apcupsd/commfailure create mode 100644 config/apcupsd/commok create mode 100644 config/apcupsd/offbattery create mode 100644 config/apcupsd/onbattery
diff --git a/config/apcupsd/changeme b/config/apcupsd/changeme new file mode 100644 index 000000000..166b6e0cb --- /dev/null +++ b/config/apcupsd/changeme @@ -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 diff --git a/config/apcupsd/commfailure b/config/apcupsd/commfailure new file mode 100644 index 000000000..4771dcfa7 --- /dev/null +++ b/config/apcupsd/commfailure @@ -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 diff --git a/config/apcupsd/commok b/config/apcupsd/commok new file mode 100644 index 000000000..5871eda5d --- /dev/null +++ b/config/apcupsd/commok @@ -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 diff --git a/config/apcupsd/offbattery b/config/apcupsd/offbattery new file mode 100644 index 000000000..99e773c42 --- /dev/null +++ b/config/apcupsd/offbattery @@ -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 diff --git a/config/apcupsd/onbattery b/config/apcupsd/onbattery new file mode 100644 index 000000000..b1df7dafd --- /dev/null +++ b/config/apcupsd/onbattery @@ -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 diff --git a/lfs/apcupsd b/lfs/apcupsd index 8ed9bbd8c..82b55272b 100644 --- a/lfs/apcupsd +++ b/lfs/apcupsd @@ -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