From af6e4bec14ca958e0c85c0819e4509b000f64e05 Mon Sep 17 00:00:00 2001 From: "Danilo G. Baio (dbaio)" Date: Thu, 26 Dec 2013 16:44:39 -0200 Subject: New package Apcupsd. A daemon for controlling APC UPSes. --- config/apcupsd/apcupsd.conf.php | 362 ++++++++++++++++++++++++++++++++++++++ config/apcupsd/apcupsd.inc | 191 ++++++++++++++++++++ config/apcupsd/apcupsd.xml | 333 +++++++++++++++++++++++++++++++++++ config/apcupsd/apcupsd_status.php | 118 +++++++++++++ pkg_config.8.xml | 20 +++ pkg_config.8.xml.amd64 | 20 +++ 6 files changed, 1044 insertions(+) create mode 100644 config/apcupsd/apcupsd.conf.php create mode 100644 config/apcupsd/apcupsd.inc create mode 100644 config/apcupsd/apcupsd.xml create mode 100755 config/apcupsd/apcupsd_status.php diff --git a/config/apcupsd/apcupsd.conf.php b/config/apcupsd/apcupsd.conf.php new file mode 100644 index 00000000..6a19b915 --- /dev/null +++ b/config/apcupsd/apcupsd.conf.php @@ -0,0 +1,362 @@ + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +*/ + +// create apcupsd.conf +$apcupsdconf=<< +# Defines the type of cable connecting the UPS to your computer. +# +# Possible generic choices for are: +# simple, smart, ether, usb +# +# Or a specific cable model number may be used: +# 940-0119A, 940-0127A, 940-0128A, 940-0020B, +# 940-0020C, 940-0023A, 940-0024B, 940-0024C, +# 940-1524C, 940-0024G, 940-0095A, 940-0095B, +# 940-0095C, M-04-02-2000 +# +UPSCABLE {$upscable} + +# To get apcupsd to work, in addition to defining the cable +# above, you must also define a UPSTYPE, which corresponds to +# the type of UPS you have (see the Description for more details). +# You must also specify a DEVICE, sometimes referred to as a port. +# For USB UPSes, please leave the DEVICE directive blank. For +# other UPS types, you must specify an appropriate port or address. +# +# UPSTYPE DEVICE Description +# apcsmart /dev/tty** Newer serial character device, appropriate for +# SmartUPS models using a serial cable (not USB). +# +# usb Most new UPSes are USB. A blank DEVICE +# setting enables autodetection, which is +# the best choice for most installations. +# +# net hostname:port Network link to a master apcupsd through apcupsd's +# Network Information Server. This is used if the +# UPS powering your computer is connected to a +# different computer for monitoring. +# +# snmp hostname:port:vendor:community +# SNMP network link to an SNMP-enabled UPS device. +# Hostname is the ip address or hostname of the UPS +# on the network. Vendor can be can be "APC" or +# "APC_NOTRAP". "APC_NOTRAP" will disable SNMP trap +# catching; you usually want "APC". Port is usually +# 161. Community is usually "private". +# +# netsnmp hostname:port:vendor:community +# OBSOLETE +# Same as SNMP above but requires use of the +# net-snmp library. Unless you have a specific need +# for this old driver, you should use 'snmp' instead. +# +# dumb /dev/tty** Old serial character device for use with +# simple-signaling UPSes. +# +# pcnet ipaddr:username:passphrase:port +# PowerChute Network Shutdown protocol which can be +# used as an alternative to SNMP with the AP9617 +# family of smart slot cards. ipaddr is the IP +# address of the UPS management card. username and +# passphrase are the credentials for which the card +# has been configured. port is the port number on +# which to listen for messages from the UPS, normally +# 3052. If this parameter is empty or missing, the +# default of 3052 will be used. +# +UPSTYPE {$upstype} + +# POLLTIME +# Interval (in seconds) at which apcupsd polls the UPS for status. This +# setting applies both to directly-attached UPSes (UPSTYPE apcsmart, usb, +# dumb) and networked UPSes (UPSTYPE net, snmp). Lowering this setting +# will improve apcupsd's responsiveness to certain events at the cost of +# higher CPU utilization. The default of 60 is appropriate for most +# situations. +POLLTIME {$polltime} + +# LOCKFILE +# Path for device lock file. Not used on Win32. +LOCKFILE /var/spool/lock + +# SCRIPTDIR +# Directory in which apccontrol and event scripts are located. +SCRIPTDIR /usr/local/etc/apcupsd + +# PWRFAILDIR +# Directory in which to write the powerfail flag file. This file +# is created when apcupsd initiates a system shutdown and is +# checked in the OS halt scripts to determine if a killpower +# (turning off UPS output power) is required. +PWRFAILDIR /var/run + +# NOLOGINDIR +# Directory in which to write the nologin file. The existence +# of this flag file tells the OS to disallow new logins. +NOLOGINDIR /var/run + + +# +# ======== Configuration parameters used during power failures ========== +# + +# The ONBATTERYDELAY is the time in seconds from when a power failure +# is detected until we react to it with an onbattery event. +# +# This means that, apccontrol will be called with the powerout argument +# immediately when a power failure is detected. However, the +# onbattery argument is passed to apccontrol only after the +# ONBATTERYDELAY time. If you don't want to be annoyed by short +# powerfailures, make sure that apccontrol powerout does nothing +# i.e. comment out the wall. +ONBATTERYDELAY {$onbatterydelay} + +# +# Note: BATTERYLEVEL, MINUTES, and TIMEOUT work in conjunction, so +# the first that occurs will cause the initation of a shutdown. +# + +# If during a power failure, the remaining battery percentage +# (as reported by the UPS) is below or equal to BATTERYLEVEL, +# apcupsd will initiate a system shutdown. +BATTERYLEVEL {$batterylevel} + +# If during a power failure, the remaining runtime in minutes +# (as calculated internally by the UPS) is below or equal to MINUTES, +# apcupsd, will initiate a system shutdown. +MINUTES {$minutes} + +# If during a power failure, the UPS has run on batteries for TIMEOUT +# many seconds or longer, apcupsd will initiate a system shutdown. +# A value of 0 disables this timer. +# +# Note, if you have a Smart UPS, you will most likely want to disable +# this timer by setting it to zero. That way, you UPS will continue +# on batteries until either the % charge remaing drops to or below BATTERYLEVEL, +# or the remaining battery runtime drops to or below MINUTES. Of course, +# if you are testing, setting this to 60 causes a quick system shutdown +# if you pull the power plug. +# If you have an older dumb UPS, you will want to set this to less than +# the time you know you can run on batteries. +TIMEOUT {$timeout} + +# Time in seconds between annoying users to signoff prior to +# system shutdown. 0 disables. +ANNOY {$annoy} + +# Initial delay after power failure before warning users to get +# off the system. +ANNOYDELAY {$annoydelay} + +# The condition which determines when users are prevented from +# logging in during a power failure. +# NOLOGON [ disable | timeout | percent | minutes | always ] +NOLOGON disable + +# If KILLDELAY is non-zero, apcupsd will continue running after a +# shutdown has been requested, and after the specified time in +# seconds attempt to kill the power. This is for use on systems +# where apcupsd cannot regain control after a shutdown. +# KILLDELAY 0 disables +KILLDELAY {$killdelay} + +# +# ==== Configuration statements for Network Information Server ==== +# + +# NETSERVER [ on | off ] on enables, off disables the network +# information server. If netstatus is on, a network information +# server process will be started for serving the STATUS and +# EVENT data over the network (used by CGI programs). +NETSERVER {$netserver} + +# NISIP +# IP address on which NIS server will listen for incoming connections. +# This is useful if your server is multi-homed (has more than one +# network interface and IP address). Default value is 0.0.0.0 which +# means any incoming request will be serviced. Alternatively, you can +# configure this setting to any specific IP address of your server and +# NIS will listen for connections only on that interface. Use the +# loopback address (127.0.0.1) to accept connections only from the +# local machine. +NISIP ${nisip} + +# NISPORT default is 3551 as registered with the IANA +# port to use for sending STATUS and EVENTS data over the network. +# It is not used unless NETSERVER is on. If you change this port, +# you will need to change the corresponding value in the cgi directory +# and rebuild the cgi programs. +NISPORT ${nisport} + +# If you want the last few EVENTS to be available over the network +# by the network information server, you must define an EVENTSFILE. +EVENTSFILE /var/log/apcupsd.events + +# EVENTSFILEMAX +# By default, the size of the EVENTSFILE will be not be allowed to exceed +# 10 kilobytes. When the file grows beyond this limit, older EVENTS will +# be removed from the beginning of the file (first in first out). The +# parameter EVENTSFILEMAX can be set to a different kilobyte value, or set +# to zero to allow the EVENTSFILE to grow without limit. +EVENTSFILEMAX 10 + +# +# ========== Configuration statements used if sharing ============= +# a UPS with more than one machine + +# +# Remaining items are for ShareUPS (APC expansion card) ONLY +# + +# UPSCLASS [ standalone | shareslave | sharemaster ] +# Normally standalone unless you share an UPS using an APC ShareUPS +# card. +UPSCLASS {$upsclass} + +# UPSMODE [ disable | share ] +# Normally disable unless you share an UPS using an APC ShareUPS card. +UPSMODE {$upsmode} + +# +# ===== Configuration statements to control apcupsd system logging ======== +# + +# Time interval in seconds between writing the STATUS file; 0 disables +STATTIME 0 + +# Location of STATUS file (written to only if STATTIME is non-zero) +STATFILE /var/log/apcupsd.status + +# LOGSTATS [ on | off ] on enables, off disables +# Note! This generates a lot of output, so if +# you turn this on, be sure that the +# file defined in syslog.conf for LOG_NOTICE is a named pipe. +# You probably do not want this on. +LOGSTATS off + +# Time interval in seconds between writing the DATA records to +# the log file. 0 disables. +DATATIME 0 + +# FACILITY defines the logging facility (class) for logging to syslog. +# If not specified, it defaults to "daemon". This is useful +# if you want to separate the data logged by apcupsd from other +# programs. +#FACILITY DAEMON + +# +# ========== Configuration statements used in updating the UPS EPROM ========= +# + +# +# These statements are used only by apctest when choosing "Set EEPROM with conf +# file values" from the EEPROM menu. THESE STATEMENTS HAVE NO EFFECT ON APCUPSD. +# + +# UPS name, max 8 characters +#UPSNAME UPS_IDEN + +# Battery date - 8 characters +#BATTDATE mm/dd/yy + +# Sensitivity to line voltage quality (H cause faster transfer to batteries) +# SENSITIVITY H M L (default = H) +#SENSITIVITY H + +# UPS delay after power return (seconds) +# WAKEUP 000 060 180 300 (default = 0) +#WAKEUP 60 + +# UPS Grace period after request to power off (seconds) +# SLEEP 020 180 300 600 (default = 20) +#SLEEP 180 + +# Low line voltage causing transfer to batteries +# The permitted values depend on your model as defined by last letter +# of FIRMWARE or APCMODEL. Some representative values are: +# D 106 103 100 097 +# M 177 172 168 182 +# A 092 090 088 086 +# I 208 204 200 196 (default = 0 => not valid) +#LOTRANSFER 208 + +# High line voltage causing transfer to batteries +# The permitted values depend on your model as defined by last letter +# of FIRMWARE or APCMODEL. Some representative values are: +# D 127 130 133 136 +# M 229 234 239 224 +# A 108 110 112 114 +# I 253 257 261 265 (default = 0 => not valid) +#HITRANSFER 253 + +# Battery charge needed to restore power +# RETURNCHARGE 00 15 50 90 (default = 15) +#RETURNCHARGE 15 + +# Alarm delay +# 0 = zero delay after pwr fail, T = power fail + 30 sec, L = low battery, N = never +# BEEPSTATE 0 T L N (default = 0) +#BEEPSTATE T + +# Low battery warning delay in minutes +# LOWBATT 02 05 07 10 (default = 02) +#LOWBATT 2 + +# UPS Output voltage when running on batteries +# The permitted values depend on your model as defined by last letter +# of FIRMWARE or APCMODEL. Some representative values are: +# D 115 +# M 208 +# A 100 +# I 230 240 220 225 (default = 0 => not valid) +#OUTPUTVOLTS 230 + +# Self test interval in hours 336=2 weeks, 168=1 week, ON=at power on +# SELFTEST 336 168 ON OFF (default = 336) +#SELFTEST 336 +EOF; +?> diff --git a/config/apcupsd/apcupsd.inc b/config/apcupsd/apcupsd.inc new file mode 100644 index 00000000..9abc23ba --- /dev/null +++ b/config/apcupsd/apcupsd.inc @@ -0,0 +1,191 @@ + + + All rights reserved. + */ +/* ========================================================================== */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + */ +/* ========================================================================== */ +require_once("util.inc"); +require_once("functions.inc"); +require_once("pkg-utils.inc"); +require_once("globals.inc"); + +function php_install_apcupsd(){ + sync_package_apcupsd(); +} + +function php_deinstall_apcupsd(){ + global $config, $g; + + conf_mount_rw(); + $pfs_version = substr(trim(file_get_contents("/etc/version")),0,3); + if ($pfs_version > 2.0){ + define('APCUPSD_BASE', '/usr/pbi/apcupsd-' . php_uname("m")); + } else { + define('APCUPSD_BASE', '/usr/local'); + } + + exec("/usr/bin/killall apcupsd"); + unlink_if_exists(APCUPSD_BASE . "/etc/rc.d/apcupsd.sh"); + unlink_if_exists(APCUPSD_BASE . "/etc/apcupsd/apcupsd.conf"); + unlink_if_exists("/var/log/apcupsd/apcupsd.log"); + unlink_if_exists("/var/run/apcupsd/apcupsd.pid"); + + if (is_dir("/var/log/apcupsd")) + exec("/bin/rm -r /var/log/apcupsd/"); + if (is_dir("/var/run/apcupsd")) + exec("/bin/rm -r /var/run/apcupsd/"); + + conf_mount_ro(); +} + +function validate_input_apcupsd($post,&$input_errors){ + + if (isset($post['apcupsdenabled'])){ + + if ($post['polltime'] != '' && !is_numericint($post['polltime'])) { + $input_errors[]='Poll Time is not numeric.'; + } + + if ($post['onbatterydelay'] != '' && !is_numericint($post['onbatterydelay'])) { + $input_errors[]='OnBattery Delay is not numeric.'; + } + + if ($post['batterylevel'] != '' && !is_numericint($post['batterylevel'])) { + $input_errors[]='Battery Level is not numeric.'; + } + + if ($post['minutes'] != '' && !is_numericint($post['minutes'])) { + $input_errors[]='Minutes is not numeric.'; + } + + if ($post['timeout'] != '' && !is_numericint($post['timeout'])) { + $input_errors[]='Timeout is not numeric.'; + } + + if ($post['annoy'] != '' && !is_numericint($post['annoy'])) { + $input_errors[]='Annoy is not numeric.'; + } + + if ($post['annoydelay'] != '' && !is_numericint($post['annoydelay'])) { + $input_errors[]='Annoy Delay is not numeric.'; + } + + if ($post['killdelay'] != '' && !is_numericint($post['killdelay'])) { + $input_errors[]='Kill Delay is not numeric.'; + } + + if ($post['nisip'] != '') { + if (!is_ipaddr_configured($post['nisip']) && !preg_match("/(127.0.0.1|0.0.0.0)/",$post['nisip'])) { + $input_errors[]='NIS Ip is not a configured IP address.'; + } + } + + if ($post['nisport'] != '') { + if (!preg_match("/^\d+$/", $post['nisport'])) { + $input_errors[]='NIS Port is not numeric.'; + } + } + + } // apcupsdenabled +} + +function sync_package_apcupsd(){ + global $config, $g; + + conf_mount_rw(); + + // check pfsense version + $pfs_version = substr(trim(file_get_contents("/etc/version")),0,3); + if ($pfs_version > 2.0){ + define('APCUPSD_BASE', '/usr/pbi/apcupsd-' . php_uname("m")); + } + else { + define('APCUPSD_BASE', '/usr/local'); + } + + // check apcupsd settings + if (is_array($config['installedpackages']['apcupsd'])){ + $apcupsd_config = $config['installedpackages']['apcupsd']['config'][0]; + if ($apcupsd_config['apcupsdenabled']=="on"){ + $upsname=$apcupsd_config['upsname']; + $upscable=$apcupsd_config['upscable']; + $upstype=$apcupsd_config['upstype']; + $polltime=($apcupsd_config['polltime'] != ''? $apcupsd_config['polltime'] : "60"); + $onbatterydelay=($apcupsd_config['onbatterydelay'] != ''? $apcupsd_config['onbatterydelay'] : "6"); + $batterylevel=($apcupsd_config['batterylevel'] != ''? $apcupsd_config['batterylevel'] : "5"); + $minutes=($apcupsd_config['minutes'] != ''? $apcupsd_config['minutes'] : "3"); + $timeout=($apcupsd_config['timeout'] != ''? $apcupsd_config['timeout'] : "0"); + $annoy=($apcupsd_config['annoy'] != ''? $apcupsd_config['annoy'] : "300"); + $annoydelay=($apcupsd_config['annoydelay'] != ''? $apcupsd_config['annoydelay'] : "60"); + $killdelay=($apcupsd_config['killdelay'] != ''? $apcupsd_config['killdelay'] : "0"); + $netserver=$apcupsd_config['netserver']; + $nisip=($apcupsd_config['nisip'] != ''? $apcupsd_config['nisip'] : "0.0.0.0"); + $nisport=($apcupsd_config['nisport'] != ''? $apcupsd_config['nisport'] : "3551"); + $upsclass=$apcupsd_config['upsclass']; + $upsmode=$apcupsd_config['upsmode']; + + include("/usr/local/pkg/apcupsd.conf.php"); + file_put_contents(APCUPSD_BASE . "/etc/apcupsd/apcupsd.conf", $apcupsdconf, LOCK_EX); + } + } + + // RC FILE + $apcupsd_rcfile="/usr/local/etc/rc.d/apcupsd.sh"; + if (is_array($apcupsd_config) && $apcupsd_config['apcupsdenabled']=="on"){ + $apcupsd_start = "echo \"Starting APC UPS Daemon...\"\n"; + if ($apcupsd_config['killonpowerfail']=="on"){ + $apcupsd_start .= " " . APCUPSD_BASE . "/sbin/apcupsd --kill-on-powerfail"; + }else{ + $apcupsd_start .= " " . APCUPSD_BASE . "/sbin/apcupsd"; + } + + $apcupsd_stop = "echo \"Stopping APC UPS Daemon...\"\n"; + $apcupsd_stop .= " /usr/bin/killall apcupsd\n"; + $apcupsd_stop .= " /bin/sleep 5"; + + /* write out rc.d start/stop file */ + write_rcfile(array( + "file" => "apcupsd.sh", + "start" => "$apcupsd_start", + "stop" => "$apcupsd_stop" + ) + ); + mwexec("{$apcupsd_rcfile} restart"); + }else{ + if (file_exists($apcupsd_rcfile)){ + mwexec("{$apcupsd_rcfile} stop"); + unlink($apcupsd_rcfile); + } + } + + conf_mount_ro(); +} +?> diff --git a/config/apcupsd/apcupsd.xml b/config/apcupsd/apcupsd.xml new file mode 100644 index 00000000..8674af61 --- /dev/null +++ b/config/apcupsd/apcupsd.xml @@ -0,0 +1,333 @@ + + + + + + All rights reserved. + */ +/* ========================================================================== */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + */ +/* ========================================================================== */ + ]]> + + Apcupsd + Services: Apcupsd (General) + Monitoring + 0.1 + /usr/local/pkg/apcupsd.inc + Apcupsd has been created/modified. + Apcupsd has been deleted. + /usr/local/etc/rc.d/apcupsd.sh restart + + http://www.pfsense.org/packages/config/apcupsd/apcupsd.inc + /usr/local/pkg/ + 0755 + + + http://www.pfsense.org/packages/config/apcupsd/apcupsd_status.php + /usr/local/www/ + 0755 + + + http://www.pfsense.org/packages/config/apcupsd/apcupsd.conf.php + /usr/local/pkg/ + 0755 + + + Apcupsd + Setup Apcupsd specific settings +
Services
+ /pkg_edit.php?xml=apcupsd.xml&id=0 +
+ + apcupsd + apcupsd.sh + apcupsd + Apcupsd a daemon for controlling APC UPSes + + + + General + /pkg_edit.php?xml=apcupsd.xml&id=0 + + + + Status + apcupsd_status.php + + + + + General configuration parameters + listtopic + + + Enable + apcupsdenabled + Enable APC UPS Daemon service + checkbox + + + UPS Name + upsname + Use this to give your UPS a name in log files and such + input + 60 + true + + + UPS Cable + upscable + +
+Possible generic choices for are:
+ simple, smart, ether, usb
+
+Or a specific cable model number may be used:
+ 940-0119A, 940-0127A, 940-0128A, 940-0020B,
+ 940-0020C, 940-0023A, 940-0024B, 940-0024C,
+ 940-1524C, 940-0024G, 940-0095A, 940-0095B,
+ 940-0095C, M-04-02-2000 + ]]>
+ input + 60 + true +
+ + UPS Type / Device + upstype + +
+UPSTYPE DEVICE Description
+
+apcsmart /dev/tty** Newer serial character device, appropriate for + SmartUPS models using a serial cable (not USB).
+
+usb BLANK Most new UPSes are USB. A blank DEVICE + setting enables autodetection, which is + the best choice for most installations.
+
+net hostname:port Network link to a master apcupsd through apcupsd's + Network Information Server. This is used if the + UPS powering your computer is connected to a + different computer for monitoring.
+
+snmp hostname:port:vendor:community + SNMP network link to an SNMP-enabled UPS device. + Hostname is the ip address or hostname of the UPS + on the network. Vendor can be can be "APC" or + "APC_NOTRAP". "APC_NOTRAP" will disable SNMP trap + catching; you usually want "APC". Port is usually + 161. Community is usually "private".
+
+netsnmp hostname:port:vendor:community + OBSOLETE + Same as SNMP above but requires use of the + net-snmp library. Unless you have a specific need + for this old driver, you should use 'snmp' instead.
+
+dumb /dev/tty** Old serial character device for use with + simple-signaling UPSes.
+
+pcnet ipaddr:username:passphrase:port + PowerChute Network Shutdown protocol which can be + used as an alternative to SNMP with the AP9617 + family of smart slot cards. ipaddr is the IP + address of the UPS management card. username and + passphrase are the credentials for which the card + has been configured. port is the port number on + which to listen for messages from the UPS, normally + 3052. If this parameter is empty or missing, the + default of 3052 will be used.
+
+ ]]>
+ input + 60 + true +
+ + Poll Time + polltime + Interval (in seconds) at which apcupsd polls the UPS for status. Default is 60 + input + 10 + 60 + + + Kill on Power Fail + killonpowerfail + Hibernate UPS on powerfail + checkbox + + + Configuration parameters used during power failures + listtopic + + + OnBattery Delay + onbatterydelay + Time in seconds from when a power failure is detected until we react to it with an onbattery event. Default is 6 + input + 10 + 6 + + + Battery Level + batterylevel + If during a power failure, the remaining battery percentage (as reported by the UPS) is + below or equal to BATTERYLEVEL, apcupsd will initiate a system shutdown. Default is 5 + input + 10 + 5 + + + Minutes + minutes + If during a power failure, the remaining runtime in minutes (as calculated internally + by the UPS) is below or equal to MINUTES, apcupsd, will initiate a system shutdown. Default is 3 + input + 10 + 3 + + + Timeout + timeout + If during a power failure, the UPS has run on batteries for TIMEOUT many seconds + or longer, apcupsd will initiate a system shutdown. A value of 0 (default) disables this timer + input + 10 + 0 + + + Annoy + annoy + Time in seconds between annoying users to signoff prior to system shutdown. 0 disables. Default is 300 + input + 10 + 300 + + + Annoy Delay + annoydelay + Initial delay after power failure before warning users to get off the system. Default is 60 + input + 10 + 60 + + + Kill Delay + killdelay + If KILLDELAY is non-zero, apcupsd will continue running after a shutdown has been + requested, and after the specified time in seconds attempt to kill the power. This is for use + on systems where apcupsd cannot regain control after a shutdown. 0 disables (default) + input + 10 + 0 + + + Configuration statements for Network Information Server + listtopic + + + Net Server + netserver + If netstatus is on, a network information server process will be started for serving + the STATUS and EVENT data over the network (used by CGI programs) + select + on + + + + + + + NIS Ip + nisip + IP address on which NIS server will listen for incoming connections. Default value is + 0.0.0.0 which means any incoming request will be serviced. Alternatively, you can configure this + setting to any specific IP address of your server and NIS will listen for connections only on that + interface. Use the loopback address (127.0.0.1) to accept connections only from the local machine + input + 10 + 0.0.0.0 + + + NIS Port + nisport + Port to use for sending STATUS and EVENTS data over the network. + It is not used unless NETSERVER is on. If you change this port, + you will need to change the corresponding value in the cgi directory + and rebuild the cgi programs. Default is 3551 as registered with the IANA + input + 10 + 3551 + + + Configuration statements used if sharing + listtopic + + + UPS Class + upsclass + Normally standalone unless you share an UPS using an APC ShareUPS card + select + standalone + + + + + + + + UPS Mode + upsmode + Normally disable unless you share an UPS using an APC ShareUPS card + select + disable + + + + + +
+ sync_package_apcupsd(); + + + + validate_input_apcupsd($_POST, &$input_errors); + + sync_package_apcupsd(); + php_deinstall_apcupsd(); +
diff --git a/config/apcupsd/apcupsd_status.php b/config/apcupsd/apcupsd_status.php new file mode 100755 index 00000000..e465f62c --- /dev/null +++ b/config/apcupsd/apcupsd_status.php @@ -0,0 +1,118 @@ + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +require("guiconfig.inc"); + +$pfSversion = str_replace("\n", "", file_get_contents("/etc/version")); + +if(strstr($pfSversion, "1.2")) + $one_two = true; + +$pgtitle = "Services: Apcupsd (Status)"; +include("head.inc"); + +function puts( $arg ) { echo "$arg\n"; } + +?> + + + + + + + + +

+ + + +
+ + +
+ +
+
+ +
+ + +
+"); + putenv("PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"); + $ph = popen('apcaccess 2>&1', "r" ); + while ($line = fgets($ph)) echo htmlspecialchars($line); + pclose($ph); + puts(""); +?> +
+
+ + + diff --git a/pkg_config.8.xml b/pkg_config.8.xml index 35c6495b..88fb6a3b 100644 --- a/pkg_config.8.xml +++ b/pkg_config.8.xml @@ -2016,5 +2016,25 @@ net-mgmt/softflowd + + Apcupsd + Set of programs for controlling APC UPS. + Services + http://www.pfsense.org/packages/config/apcupsd/apcupsd.xml + apcupsd-3.14.10_1 pkg v0.1 + BETA + 2.0 + apcupsd.xml + dbaio@bsd.com.br + /usr/ports/sysutils/apcupsd + + apcupsd + sysutils/apcupsd + + OPTIONS_SET+= APCSMART_DRV APCDUMB_DRV PCNET_DRV USB TCP_WRAPPERS;OPTIONS_UNSET+= CLIENT_ONLY CGI SNMP_DRV SNMP_DRV_OLD TEST_DRV GAPCMON DOCS + http://files.pfsense.org/packages/8/All/ + apcupsd-3.14.10_1.tbz + apcupsd-3.14.10_1-i386.pbi + diff --git a/pkg_config.8.xml.amd64 b/pkg_config.8.xml.amd64 index a9ccd72c..481c70dd 100644 --- a/pkg_config.8.xml.amd64 +++ b/pkg_config.8.xml.amd64 @@ -2003,5 +2003,25 @@ net-mgmt/softflowd + + Apcupsd + Set of programs for controlling APC UPS. + Services + http://www.pfsense.org/packages/config/apcupsd/apcupsd.xml + apcupsd-3.14.10_1 pkg v0.1 + BETA + 2.0 + apcupsd.xml + dbaio@bsd.com.br + /usr/ports/sysutils/apcupsd + + apcupsd + sysutils/apcupsd + + OPTIONS_SET+= APCSMART_DRV APCDUMB_DRV PCNET_DRV USB TCP_WRAPPERS;OPTIONS_UNSET+= CLIENT_ONLY CGI SNMP_DRV SNMP_DRV_OLD TEST_DRV GAPCMON DOCS + http://files.pfsense.org/packages/amd64/8/All/ + apcupsd-3.14.10_1.tbz + apcupsd-3.14.10_1-amd64.pbi + -- cgit v1.2.3