aboutsummaryrefslogtreecommitdiffstats
path: root/config/apcupsd
diff options
context:
space:
mode:
Diffstat (limited to 'config/apcupsd')
-rw-r--r--config/apcupsd/apcupsd.conf.php56
-rw-r--r--config/apcupsd/apcupsd.inc317
-rw-r--r--config/apcupsd/apcupsd.xml347
-rwxr-xr-xconfig/apcupsd/apcupsd_mail.php23
-rwxr-xr-xconfig/apcupsd/apcupsd_status.php130
5 files changed, 420 insertions, 453 deletions
diff --git a/config/apcupsd/apcupsd.conf.php b/config/apcupsd/apcupsd.conf.php
index 7b6096bc..e472846c 100644
--- a/config/apcupsd/apcupsd.conf.php
+++ b/config/apcupsd/apcupsd.conf.php
@@ -1,35 +1,35 @@
<?php
/*
- apcupsd.conf.php
- part of the apcupsd package for pfSense
- Copyright (C) 2013 Danilo G. Baio <dbaio@bsd.com.br>
- 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.conf.php
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2013-2015 Danilo G. Baio <dbaio@bsd.com.br>
+ Copyright (C) 2015 ESF, LLC
+ 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=<<<EOF
+// Create apcupsd.conf
+$apcupsdconf =<<<EOF
## apcupsd.conf v1.1 ##
#
# for apcupsd release 3.14.10 (13 September 2011) - freebsd
diff --git a/config/apcupsd/apcupsd.inc b/config/apcupsd/apcupsd.inc
index 0a99982d..2b166994 100644
--- a/config/apcupsd/apcupsd.inc
+++ b/config/apcupsd/apcupsd.inc
@@ -1,53 +1,48 @@
<?php
-/* $Id$ */
-/* ========================================================================== */
/*
- apcupsd.inc
- part of the apcupsd package for pfSense
- Copyright (C) 2013 Danilo G. Baio <dbaio@bsd.com.br>
-
- 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.inc
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2013-2015 Danilo G. Baio <dbaio@bsd.com.br>
+ Copyright (C) 2015 ESF, LLC
+ 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_install_apcupsd() {
+ sync_package_apcupsd();
apccontrol_scripts_install();
}
-function php_deinstall_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){
+ $pfs_version = substr(trim(file_get_contents("/etc/version")), 0, 3);
+ if ($pfs_version == "2.1" || $pfs_version == "2.2") {
define('APCUPSD_BASE', '/usr/pbi/apcupsd-' . php_uname("m"));
} else {
define('APCUPSD_BASE', '/usr/local');
@@ -59,176 +54,171 @@ function php_deinstall_apcupsd(){
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/");
+ if (is_dir("/var/log/apcupsd")) {
+ exec("/bin/rm -rf /var/log/apcupsd/");
+ }
+ if (is_dir("/var/run/apcupsd")) {
+ exec("/bin/rm -rf /var/run/apcupsd/");
+ }
- conf_mount_ro();
+ conf_mount_ro();
}
-function validate_input_apcupsd($post,&$input_errors){
+function validate_input_apcupsd($post, &$input_errors) {
- if (isset($post['apcupsdenabled'])){
-
+ if (isset($post['apcupsdenabled'])) {
if ($post['polltime'] != '' && !is_numericint($post['polltime'])) {
- $input_errors[]='Poll Time is not numeric.';
+ $input_errors[] = 'Poll Time is not numeric.';
}
if ($post['onbatterydelay'] != '' && !is_numericint($post['onbatterydelay'])) {
- $input_errors[]='OnBattery Delay is not numeric.';
+ $input_errors[] = 'OnBattery Delay is not numeric.';
}
if ($post['batterylevel'] != '' && !is_numericint($post['batterylevel'])) {
- $input_errors[]='Battery Level is not numeric.';
+ $input_errors[] = 'Battery Level is not numeric.';
}
if ($post['minutes'] != '' && !is_numericint($post['minutes'])) {
- $input_errors[]='Minutes is not numeric.';
+ $input_errors[] = 'Minutes is not numeric.';
}
if ($post['timeout'] != '' && !is_numericint($post['timeout'])) {
- $input_errors[]='Timeout is not numeric.';
+ $input_errors[] = 'Timeout is not numeric.';
}
if ($post['annoy'] != '' && !is_numericint($post['annoy'])) {
- $input_errors[]='Annoy is not numeric.';
+ $input_errors[] = 'Annoy is not numeric.';
}
if ($post['annoydelay'] != '' && !is_numericint($post['annoydelay'])) {
- $input_errors[]='Annoy Delay is not numeric.';
+ $input_errors[] = 'Annoy Delay is not numeric.';
}
if ($post['killdelay'] != '' && !is_numericint($post['killdelay'])) {
- $input_errors[]='Kill Delay is not numeric.';
+ $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 (!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.';
- }
+ $input_errors[] = 'NIS Port is not numeric.';
+ }
}
if ($post['emailnotification'] == 'smtpbuiltin') {
-
if (empty($post['smtphost'])) {
- $input_errors[]='SMTP Host cannot be empty if SMTP builtin is enabled.';
+ $input_errors[] = 'SMTP Host cannot be empty if SMTP builtin is enabled.';
}
if (empty($post['smtpport'])) {
- $input_errors[]='SMTP Port cannot be empty if SMTP builtin is enabled.';
- }elseif(!is_port($post['smtpport'])){
- $input_errors[]='SMTP Port is not a valid port.';
+ $input_errors[] = 'SMTP Port cannot be empty if SMTP builtin is enabled.';
+ } elseif (!is_port($post['smtpport'])) {
+ $input_errors[]='SMTP Port is not a valid port.';
}
if (empty($post['smtpfrom'])) {
- $input_errors[]='From field cannot be empty if SMTP builtin is enabled.';
+ $input_errors[] = 'From field cannot be empty if SMTP builtin is enabled.';
}
if (empty($post['smtpto'])) {
- $input_errors[]='To field cannot be empty if SMTP builtin is enabled..';
+ $input_errors[] = 'To field cannot be empty if SMTP builtin is enabled.';
}
-
}
- } // apcupsdenabled
+ }
}
-function sync_package_apcupsd(){
+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){
+ $pfs_version = substr(trim(file_get_contents("/etc/version")), 0, 3);
+ if ($pfs_version == "2.1" || $pfs_version == "2.2") {
define('APCUPSD_BASE', '/usr/pbi/apcupsd-' . php_uname("m"));
- }
- else {
+ } else {
define('APCUPSD_BASE', '/usr/local');
}
// check apcupsd settings
- if (is_array($config['installedpackages']['apcupsd'])){
+ 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'];
- $device=($apcupsd_config['device'] != ''? "DEVICE {$apcupsd_config['device']}" : "#DEVICE");
- $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'];
- $lockfile=($apcupsd_config['lockfile'] != ''? $apcupsd_config['lockfile'] : "/var/tmp");
- $emailnotification=$apcupsd_config['emailnotification'];
-
+ if ($apcupsd_config['apcupsdenabled'] == "on") {
+ $upsname = $apcupsd_config['upsname'];
+ $upscable = $apcupsd_config['upscable'];
+ $upstype = $apcupsd_config['upstype'];
+ $device = ($apcupsd_config['device'] != '' ? "DEVICE {$apcupsd_config['device']}" : "#DEVICE");
+ $polltime = $apcupsd_config['polltime'] ?: "60";
+ $onbatterydelay = $apcupsd_config['onbatterydelay'] ?: "6";
+ $batterylevel= $apcupsd_config['batterylevel'] ?: "5";
+ $minutes = $apcupsd_config['minutes'] ?: "3";
+ $timeout = $apcupsd_config['timeout'] ?: "0";
+ $annoy = $apcupsd_config['annoy'] ?: "300";
+ $annoydelay = $apcupsd_config['annoydelay'] ?: "60";
+ $killdelay = $apcupsd_config['killdelay'] ?: "0";
+ $netserver = $apcupsd_config['netserver'];
+ $nisip= $apcupsd_config['nisip'] ?: "0.0.0.0";
+ $nisport = $apcupsd_config['nisport'] ?: "3551";
+ $upsclass = $apcupsd_config['upsclass'];
+ $upsmode = $apcupsd_config['upsmode'];
+ $lockfile= $apcupsd_config['lockfile'] ?: "/var/tmp";
+ $emailnotification = $apcupsd_config['emailnotification'];
+
include("/usr/local/pkg/apcupsd.conf.php");
file_put_contents(APCUPSD_BASE . "/etc/apcupsd/apcupsd.conf", $apcupsdconf, LOCK_EX);
}
}
- // RC FILE
+ // RC FILE
$apcupsd_rcfile="/usr/local/etc/rc.d/apcupsd.sh";
- if (is_array($apcupsd_config) && $apcupsd_config['apcupsdenabled']=="on"){
+ if (is_array($apcupsd_config) && $apcupsd_config['apcupsdenabled']=="on") {
+
$apcupsd_start = "echo \"Starting APC UPS Daemon...\"\n";
$apcupsd_start .= " if [ ! -d {$lockfile} ]; then \n";
$apcupsd_start .= " /bin/mkdir -p {$lockfile} \n";
$apcupsd_start .= " fi \n";
$apcupsd_start .= " /bin/rm -f {$lockfile}/*LCK* 2>/dev/null \n";
- if ($apcupsd_config['killonpowerfail']=="on"){
+ if ($apcupsd_config['killonpowerfail'] == "on") {
$apcupsd_start .= " " . APCUPSD_BASE . "/sbin/apcupsd --kill-on-powerfail";
- }else{
+ } else {
$apcupsd_start .= " " . APCUPSD_BASE . "/sbin/apcupsd";
}
-
- $apcupsd_stop = "echo \"Stopping APC UPS Daemon...\"\n";
+
+ $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"
- )
+ "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);
- }
+
+ restart_service("apcupsd");
+
+ } else {
+ stop_service("apcupsd");
+ unlink_if_exists($apcupsd_rcfile);
}
apccontrol_scripts_install($emailnotification);
conf_mount_ro();
}
-function apccontrol_scripts_install($emailnotification){
+function apccontrol_scripts_install($emailnotification) {
global $config, $g;
- // check pfsense version
- $pfs_version = substr(trim(file_get_contents("/etc/version")),0,3);
- if ($pfs_version > 2.0){
+ if ($pfs_version == "2.1" || $pfs_version == "2.2") {
define('APCUPSD_BASE', '/usr/pbi/apcupsd-' . php_uname("m"));
- }
- else {
+ } else {
define('APCUPSD_BASE', '/usr/local');
}
@@ -239,21 +229,21 @@ function apccontrol_scripts_install($emailnotification){
$apcstatus['changeme'] = "\$HOSTNAME - Emergency! UPS batteries have failed. Change them NOW";
$apccontrol_scripts = array("offbattery","onbattery","commfailure","commok","changeme");
- foreach($apccontrol_scripts as $apccontrol_script) {
+ foreach ($apccontrol_scripts as $apccontrol_script) {
- if ($emailnotification == "smtpbuiltin"){
+ if ($emailnotification == "smtpbuiltin") {
- if (is_array($config['installedpackages']['apcupsd'])){
+ if (is_array($config['installedpackages']['apcupsd'])) {
$apcupsd_config = $config['installedpackages']['apcupsd']['config'][0];
- if ($apcupsd_config['apcupsdenabled']=="on"){
- $smtphost=($apcupsd_config['smtphost'] != ''? $apcupsd_config['smtphost'] : "0.0.0.0");
- $smtpport=($apcupsd_config['smtpport'] != ''? $apcupsd_config['smtpport'] : "25");
- $smtpfrom=$apcupsd_config['smtpfrom'];
- $smtpto=$apcupsd_config['smtpto'];
- $smtpcc=$apcupsd_config['smtpcc'];
- if(empty($smtpcc)){
+ if ($apcupsd_config['apcupsdenabled'] == "on") {
+ $smtphost = $apcupsd_config['smtphost'] ?: "0.0.0.0";
+ $smtpport = $apcupsd_config['smtpport'] ?: "25";
+ $smtpfrom = $apcupsd_config['smtpfrom'];
+ $smtpto = $apcupsd_config['smtpto'];
+ $smtpcc = $apcupsd_config['smtpcc'];
+ if (empty($smtpcc)) {
$smtpcc_cmd = "";
- }else{
+ } else {
$smtpcc_cmd = "-c {$smtpcc}";
}
}
@@ -261,7 +251,7 @@ function apccontrol_scripts_install($emailnotification){
$pfSense_hostname = gethostname();
- $apccontrol_script_file=<<<EOF
+ $apccontrol_script_file =<<<EOF
#!/bin/sh
HOSTNAME="{$pfSense_hostname}"
@@ -276,8 +266,9 @@ MSG="{$apcstatus["{$apccontrol_script}"]}"
exit 0
EOF;
- }else{
- $apccontrol_script_file=<<<EOF
+
+ } else {
+ $apccontrol_script_file =<<<EOF
#!/bin/sh
/usr/local/bin/php -f /usr/local/pkg/apcupsd_mail.php {$apccontrol_script} > /dev/null
@@ -292,45 +283,41 @@ EOF;
}
-function check_nis_running_apcupsd(){
- global $config, $g;
-
- if (is_array($config['installedpackages']['apcupsd'])){
- $apcupsd_config = $config['installedpackages']['apcupsd']['config'][0];
-
- if ($apcupsd_config['apcupsdenabled']=="on" && $apcupsd_config['netserver']=="on" )
- return(true);
- }
+function check_nis_running_apcupsd() {
+ global $config, $g;
- return(false);
+ if (is_array($config['installedpackages']['apcupsd'])) {
+ $apcupsd_config = $config['installedpackages']['apcupsd']['config'][0];
+ if ($apcupsd_config['apcupsdenabled'] == "on" && $apcupsd_config['netserver'] == "on" ) {
+ return(true);
+ }
+ } else {
+ return(false);
+ }
}
-
-function check_nis_ip_apcupsd(){
- global $config, $g;
-
- if (is_array($config['installedpackages']['apcupsd'])){
- $apcupsd_config = $config['installedpackages']['apcupsd']['config'][0];
-
- if ($apcupsd_config['apcupsdenabled']=="on" && $apcupsd_config['netserver']=="on" )
- return($apcupsd_config['nisip']);
- }
-
- return(false);
+function check_nis_ip_apcupsd() {
+ global $config, $g;
+ if (is_array($config['installedpackages']['apcupsd'])) {
+ $apcupsd_config = $config['installedpackages']['apcupsd']['config'][0];
+ if ($apcupsd_config['apcupsdenabled']=="on" && $apcupsd_config['netserver']=="on" ) {
+ return($apcupsd_config['nisip']);
+ }
+ } else {
+ return(false);
+ }
}
-function check_nis_port_apcupsd(){
- global $config, $g;
-
- if (is_array($config['installedpackages']['apcupsd'])){
- $apcupsd_config = $config['installedpackages']['apcupsd']['config'][0];
-
- if ($apcupsd_config['apcupsdenabled']=="on" && $apcupsd_config['netserver']=="on" )
- return($apcupsd_config['nisport']);
- }
-
- return(false);
+function check_nis_port_apcupsd() {
+ global $config, $g;
+ if (is_array($config['installedpackages']['apcupsd'])) {
+ $apcupsd_config = $config['installedpackages']['apcupsd']['config'][0];
+ if ($apcupsd_config['apcupsdenabled']=="on" && $apcupsd_config['netserver']=="on" ) {
+ return($apcupsd_config['nisport']);
+ }
+ } else {
+ return(false);
+ }
}
?>
-
diff --git a/config/apcupsd/apcupsd.xml b/config/apcupsd/apcupsd.xml
index 364db8b8..38c84e81 100644
--- a/config/apcupsd/apcupsd.xml
+++ b/config/apcupsd/apcupsd.xml
@@ -1,46 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<packagegui>
-<copyright>
- <![CDATA[
+ <copyright>
+<![CDATA[
/* $Id$ */
-/* ========================================================================== */
+/* ====================================================================================== */
/*
- apcupsd.xml
- part of the apcupsd package for pfSense
- Copyright (C) 2013 Danilo G. Baio <dbaio@bsd.com.br>
-
- All rights reserved.
- */
-/* ========================================================================== */
+ apcupsd.xml
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2013-2015 Danilo G. Baio <dbaio@bsd.com.br>
+ Copyright (C) 2015 ESF, LLC
+ All rights reserved.
+*/
+/* ====================================================================================== */
/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
+ 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.
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
- 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.
- */
-/* ========================================================================== */
+ 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.
+*/
+/* ====================================================================================== */
]]>
</copyright>
<name>Apcupsd</name>
<title>Services: Apcupsd (General)</title>
<category>Monitoring</category>
- <version>0.3.5</version>
+ <version>0.3.7</version>
<include_file>/usr/local/pkg/apcupsd.inc</include_file>
<addedit_string>Apcupsd has been created/modified.</addedit_string>
<delete_string>Apcupsd has been deleted.</delete_string>
@@ -48,22 +50,18 @@
<additional_files_needed>
<item>https://packages.pfsense.org/packages/config/apcupsd/apcupsd.inc</item>
<prefix>/usr/local/pkg/</prefix>
- <chmod>0755</chmod>
</additional_files_needed>
<additional_files_needed>
<item>https://packages.pfsense.org/packages/config/apcupsd/apcupsd_status.php</item>
<prefix>/usr/local/www/</prefix>
- <chmod>0755</chmod>
</additional_files_needed>
<additional_files_needed>
<item>https://packages.pfsense.org/packages/config/apcupsd/apcupsd.conf.php</item>
<prefix>/usr/local/pkg/</prefix>
- <chmod>0755</chmod>
</additional_files_needed>
<additional_files_needed>
<item>https://packages.pfsense.org/packages/config/apcupsd/apcupsd_mail.php</item>
<prefix>/usr/local/pkg/</prefix>
- <chmod>0755</chmod>
</additional_files_needed>
<menu>
<name>Apcupsd</name>
@@ -103,92 +101,99 @@
<fielddescr>UPS Name</fielddescr>
<fieldname>upsname</fieldname>
<description>Use this to give your UPS a name in log files and such</description>
- <type>input</type>
- <size>60</size>
+ <type>input</type>
+ <size>60</size>
<required>true</required>
</field>
<field>
<fielddescr>UPS Cable</fielddescr>
<fieldname>upscable</fieldname>
- <description><![CDATA[Defines the type of cable connecting the UPS to your computer.<br>
-<br>
-Possible generic choices for <cable> are:<br>
- simple, smart, ether, usb<br>
-<br>
-Or a specific cable model number may be used:<br>
- 940-0119A, 940-0127A, 940-0128A, 940-0020B,<br>
- 940-0020C, 940-0023A, 940-0024B, 940-0024C,<br>
- 940-1524C, 940-0024G, 940-0095A, 940-0095B,<br>
- 940-0095C, M-04-02-2000
- ]]></description>
- <type>input</type>
- <size>60</size>
+ <description>
+ <![CDATA[
+ Defines the type of cable connecting the UPS to your computer.<br /><br />
+ Possible generic choices for 'cable' are:<br />
+ simple, smart, ether, usb
+ <br /><br/>
+ Or a specific cable model number may be used:<br />
+ 940-0119A, 940-0127A, 940-0128A, 940-0020B,<br />
+ 940-0020C, 940-0023A, 940-0024B, 940-0024C,<br />
+ 940-1524C, 940-0024G, 940-0095A, 940-0095B,<br />
+ 940-0095C, M-04-02-2000
+ ]]>
+ </description>
+ <type>input</type>
+ <size>60</size>
<required>true</required>
</field>
<field>
<fielddescr>UPS Type / Device</fielddescr>
<fieldname>upstype</fieldname>
- <description><![CDATA[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.<br>
-<br>
-UPSTYPE DEVICE Description <br>
-<br>
-<strong>apcsmart /dev/tty**</strong> Newer serial character device, appropriate for
- SmartUPS models using a serial cable (not USB).<br>
-<br>
-<strong>usb BLANK</strong> Most new UPSes are USB. A blank DEVICE
- setting enables autodetection, which is
- the best choice for most installations.<br>
-<br>
-<strong>net hostname:port</strong> 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.<br>
-<br>
-<strong>snmp hostname:port:vendor:community</strong>
- 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".<br>
-<br>
-<strong>dumb /dev/tty**</strong> Old serial character device for use with
- simple-signaling UPSes.<br>
-<br>
-<strong>pcnet ipaddr:username:passphrase:port</strong>
- 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.<br>
-<br>
- ]]></description>
- <type>input</type>
- <size>60</size>
+ <description>
+ <![CDATA[
+ To get apcupsd to work, in addition to defining the cable above, you must also define a UPSTYPE, which corresponds to&nbsp;
+ the type of UPS you have (see the Description for more details). You must also specify a DEVICE, sometimes referred to as a port.<br />
+ For USB UPSes, please leave the DEVICE directive blank. For other UPS types, you must specify an appropriate port or address.<br /><br />
+ <table>
+ <tr>
+ <th style="text-align: left">UPSTYPE</th>
+ <th style="text-align: left">DEVICE</th>
+ <th style="text-align: left">Description</th>
+ </tr>
+ <tr>
+ <td>apcsmart</td>
+ <td>/dev/tty**</td>
+ <td>Newer serial character device, appropriate for SmartUPS models using a serial cable (not USB).</td>
+ </tr>
+ <tr>
+ <td>usb</td>
+ <td>BLANK</td>
+ <td>Most new UPSes are USB. A blank DEVICE setting enables autodetection, which is the best choice for most installations.</td>
+ </tr>
+ <tr>
+ <td>net</td>
+ <td>hostname:port</td>
+ <td>Network link to a master apcupsd through apcupsd's Network Information Server. This is used if the&nbsp;
+ UPS powering your computer is connected to a different computer for monitoring.</td>
+ </tr>
+ <tr>
+ <td>snmp</td>
+ <td>hostname:port:vendor:community</td>
+ <td>SNMP network link to an SNMP-enabled UPS device. Hostname is the ip address or hostname of the UPS on the network.<br />
+ Vendor can be can be "APC" or "APC_NOTRAP". "APC_NOTRAP" will disable SNMP trap catching; you usually want "APC".<br />
+ Port is usually 161. Community is usually "private".</td>
+ </tr>
+ <tr>
+ <td>dumb</td>
+ <td>/dev/tty**</td>
+ <td>Old serial character device for use with simple-signaling UPSes.</td>
+ </tr>
+ <tr>
+ <td>pcnet</td>
+ <td>ipaddr:username:passphrase:port</td>
+ <td>PowerChute Network Shutdown protocol which can be used as an alternative to SNMP with the AP9617 family of smart slot cards.<br />
+ ipaddr is the IP address of the UPS management card; username and passphrase are the credentials for which the card has been configured.<br />
+ 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.</td>
+ </tr>
+ </table>
+ ]]>
+ </description>
+ <type>input</type>
+ <size>60</size>
<required>true</required>
</field>
<field>
<fielddescr>Device</fielddescr>
<fieldname>device</fieldname>
<description></description>
- <type>input</type>
- <size>60</size>
+ <type>input</type>
+ <size>60</size>
</field>
<field>
<fielddescr>Poll Time</fielddescr>
<fieldname>polltime</fieldname>
- <description>Interval (in seconds) at which apcupsd polls the UPS for status. Default is 60</description>
- <type>input</type>
- <size>10</size>
+ <description>Interval (in seconds) at which apcupsd polls the UPS for status. (Default: 60)</description>
+ <type>input</type>
+ <size>10</size>
<default_value>60</default_value>
</field>
<field>
@@ -200,9 +205,9 @@ UPSTYPE DEVICE Description <br>
<field>
<fielddescr>Lock File</fielddescr>
<fieldname>lockfile</fieldname>
- <description>Path for device lock file. Default is /var/tmp</description>
- <type>input</type>
- <size>60</size>
+ <description>Path for device lock file. (Default: /var/tmp)</description>
+ <type>input</type>
+ <size>60</size>
</field>
<field>
<name>Configuration parameters used during power failures</name>
@@ -211,62 +216,65 @@ UPSTYPE DEVICE Description <br>
<field>
<fielddescr>OnBattery Delay</fielddescr>
<fieldname>onbatterydelay</fieldname>
- <description>Time in seconds from when a power failure is detected until we react to it with an onbattery event. Default is 6</description>
- <type>input</type>
- <size>10</size>
+ <description>Time in seconds from when a power failure is detected until we react to it with an onbattery event. (Default: 6)</description>
+ <type>input</type>
+ <size>10</size>
<default_value>6</default_value>
</field>
<field>
<fielddescr>Battery Level</fielddescr>
<fieldname>batterylevel</fieldname>
<description>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</description>
- <type>input</type>
- <size>10</size>
+ below or equal to BATTERYLEVEL, apcupsd will initiate a system shutdown. (Default: 5)</description>
+ <type>input</type>
+ <size>10</size>
<default_value>5</default_value>
</field>
<field>
<fielddescr>Minutes</fielddescr>
<fieldname>minutes</fieldname>
<description>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</description>
- <type>input</type>
- <size>10</size>
+ by the UPS) is below or equal to MINUTES, apcupsd, will initiate a system shutdown. (Default: 3)</description>
+ <type>input</type>
+ <size>10</size>
<default_value>3</default_value>
</field>
<field>
<fielddescr>Timeout</fielddescr>
<fieldname>timeout</fieldname>
<description>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</description>
- <type>input</type>
- <size>10</size>
+ or longer, apcupsd will initiate a system shutdown. A value of 0 (default) disables this timer.</description>
+ <type>input</type>
+ <size>10</size>
<default_value>0</default_value>
</field>
<field>
<fielddescr>Annoy</fielddescr>
<fieldname>annoy</fieldname>
- <description>Time in seconds between annoying users to signoff prior to system shutdown. 0 disables. Default is 300</description>
- <type>input</type>
- <size>10</size>
+ <description>Time in seconds between annoying users to signoff prior to system shutdown. 0 disables. (Default: 300)</description>
+ <type>input</type>
+ <size>10</size>
<default_value>300</default_value>
</field>
<field>
<fielddescr>Annoy Delay</fielddescr>
<fieldname>annoydelay</fieldname>
- <description>Initial delay after power failure before warning users to get off the system. Default is 60</description>
- <type>input</type>
- <size>10</size>
+ <description>Initial delay after power failure before warning users to get off the system. (Default: 60)</description>
+ <type>input</type>
+ <size>10</size>
<default_value>60</default_value>
</field>
<field>
<fielddescr>Kill Delay</fielddescr>
<fieldname>killdelay</fieldname>
- <description>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)</description>
- <type>input</type>
- <size>10</size>
+ <description>
+ <![CDATA[
+ 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.<br />
+ This is for use on systems where apcupsd cannot regain control after a shutdown. 0 disables (default).
+ ]]>
+ </description>
+ <type>input</type>
+ <size>10</size>
<default_value>0</default_value>
</field>
<field>
@@ -277,7 +285,7 @@ UPSTYPE DEVICE Description <br>
<fielddescr>Net Server</fielddescr>
<fieldname>netserver</fieldname>
<description>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)</description>
+ the STATUS and EVENT data over the network (used by CGI programs).</description>
<type>select</type>
<default_value>on</default_value>
<options>
@@ -286,25 +294,31 @@ UPSTYPE DEVICE Description <br>
</options>
</field>
<field>
- <fielddescr>NIS Ip</fielddescr>
+ <fielddescr>NIS IP</fielddescr>
<fieldname>nisip</fieldname>
- <description>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</description>
- <type>input</type>
- <size>10</size>
+ <description>
+ <![CDATA[
+ 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.<br />
+ Alternatively, you can configure this setting to any specific IP address of your server and NIS will listen for connections only on that interface.<br />
+ Use the loopback address (127.0.0.1) to accept connections only from the local machine.
+ ]]>
+ </description>
+ <type>input</type>
+ <size>10</size>
<default_value>0.0.0.0</default_value>
</field>
<field>
<fielddescr>NIS Port</fielddescr>
<fieldname>nisport</fieldname>
- <description>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</description>
- <type>input</type>
- <size>10</size>
+ <description>
+ <![CDATA[
+ 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,&nbsp;
+ you will need to change the corresponding value in the CGI directory and rebuild the CGI programs.<br />
+ (Default is 3551 as registered with the IANA.)
+ ]]>
+ </description>
+ <type>input</type>
+ <size>10</size>
<default_value>3551</default_value>
</field>
<field>
@@ -314,7 +328,7 @@ UPSTYPE DEVICE Description <br>
<field>
<fielddescr>UPS Class</fielddescr>
<fieldname>upsclass</fieldname>
- <description>Normally standalone unless you share an UPS using an APC ShareUPS card</description>
+ <description>Normally standalone unless you share an UPS using an APC ShareUPS card.</description>
<type>select</type>
<default_value>standalone</default_value>
<options>
@@ -326,7 +340,7 @@ UPSTYPE DEVICE Description <br>
<field>
<fielddescr>UPS Mode</fielddescr>
<fieldname>upsmode</fieldname>
- <description>Normally disable unless you share an UPS using an APC ShareUPS card</description>
+ <description>Normally disable unless you share an UPS using an APC ShareUPS card.</description>
<type>select</type>
<default_value>disable</default_value>
<options>
@@ -339,20 +353,17 @@ UPSTYPE DEVICE Description <br>
<type>listtopic</type>
</field>
<field>
- <fielddescr>E-mail notification</fielddescr>
+ <fielddescr>E-mail notifications</fielddescr>
<fieldname>emailnotification</fieldname>
- <description><![CDATA[Choose how APCUpsd will send email notifications.<br>
-<br>
-<strong>phpMailer</strong> - In order to receive e-mail notifications through phpMailer, you need
-to configure SMTP Email Notifications on Advanced/Notifications section, and also,
-install mailreport package.<br>
-This feature is currently broken on pfSense 2.2, for more info see pfSense forum:
-<a href="https://forum.pfsense.org/index.php?topic=89901.0">APCupsd package status for pfSense.</a><br>
-<br>
-<strong>SMTP built-in</strong> - A simple SMTP mail client for apcupsd.
-It does not have smtp authentication of any kind.
-<br>
- ]]></description>
+ <description>
+ <![CDATA[
+ Choose how APCUpsd will send email notifications.<br /><br />
+ <strong>phpMailer</strong> - In order to receive e-mail notifications through phpMailer, you need to configure SMTP Email Notifications on Advanced/Notifications section,&nbsp;
+ and also install mailreport package.<br />
+ This feature is currently broken on pfSense 2.2; for more info see pfSense forum: <a href="https://forum.pfsense.org/index.php?topic=89901.0">APCupsd package status for pfSense.</a><br /><br />
+ <strong>SMTP built-in</strong> - A simple SMTP mail client for apcupsd. It does not have smtp authentication of any kind.
+ ]]>
+ </description>
<type>select</type>
<default_value>phpmailer</default_value>
<options>
@@ -361,51 +372,47 @@ It does not have smtp authentication of any kind.
</options>
</field>
<field>
- <name>SMTP built-in</name>
+ <name>SMTP built-in settings</name>
<type>listtopic</type>
</field>
<field>
<fielddescr>SMTP Host</fielddescr>
<fieldname>smtphost</fieldname>
<description></description>
- <type>input</type>
- <size>20</size>
+ <type>input</type>
+ <size>20</size>
</field>
<field>
<fielddescr>SMTP Port</fielddescr>
<fieldname>smtpport</fieldname>
<description></description>
- <type>input</type>
- <size>5</size>
+ <type>input</type>
+ <size>5</size>
</field>
<field>
<fielddescr>From</fielddescr>
<fieldname>smtpfrom</fieldname>
<description></description>
- <type>input</type>
- <size>20</size>
+ <type>input</type>
+ <size>20</size>
</field>
<field>
<fielddescr>To</fielddescr>
<fieldname>smtpto</fieldname>
<description></description>
- <type>input</type>
- <size>20</size>
+ <type>input</type>
+ <size>20</size>
</field>
<field>
<fielddescr>Cc</fielddescr>
<fieldname>smtpcc</fieldname>
<description></description>
- <type>input</type>
- <size>20</size>
+ <type>input</type>
+ <size>20</size>
</field>
</fields>
<custom_php_install_command>php_install_apcupsd();</custom_php_install_command>
- <custom_php_command_before_form></custom_php_command_before_form>
- <custom_php_after_head_command></custom_php_after_head_command>
- <custom_php_after_form_command></custom_php_after_form_command>
<custom_php_validation_command>validate_input_apcupsd($_POST, $input_errors);</custom_php_validation_command>
- <custom_add_php_command></custom_add_php_command>
<custom_php_resync_config_command>sync_package_apcupsd();</custom_php_resync_config_command>
<custom_php_deinstall_command>php_deinstall_apcupsd();</custom_php_deinstall_command>
</packagegui>
diff --git a/config/apcupsd/apcupsd_mail.php b/config/apcupsd/apcupsd_mail.php
index 15c74fd2..30a8b957 100755
--- a/config/apcupsd/apcupsd_mail.php
+++ b/config/apcupsd/apcupsd_mail.php
@@ -1,8 +1,9 @@
<?php
/*
apcupsd_mail.php
- part of pfSense (https://www.pfsense.org/)
- Copyright (C) 2014 Danilo G. Baio <dbaio@bsd.com.br>
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2014-2015 Danilo G. Baio <dbaio@bsd.com.br>
+ Copyright (C) 2015 ESF, LLC
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -26,7 +27,6 @@
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
-
require_once("pkg-utils.inc");
require_once("globals.inc");
require_once("phpmailer/PHPMailerAutoload.php");
@@ -49,28 +49,31 @@ $apcstatus[emergency] = "Emergency Shutdown. Possible UPS battery failure";
$apcstatus[changeme] = "Emergency! UPS batteries have failed. Change them NOW";
$apcstatus[remotedown] = "Remote Shutdown. Beginning Shutdown Sequence";
-if (empty($argv[1]) || empty($apcstatus["$argv[1]"]))
+if (empty($argv[1]) || empty($apcstatus["$argv[1]"])) {
return;
+}
$apcsubject = $apcstatus["$argv[1]"];
-if (empty($config['notifications']['smtp']['ipaddress']))
+if (empty($config['notifications']['smtp']['ipaddress'])) {
return;
+}
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = $config['notifications']['smtp']['ipaddress'];
-if ((isset($config['notifications']['smtp']['ssl']) && $config['notifications']['smtp']['ssl'] != "unchecked") || $config['notifications']['smtp']['ssl'] == "checked")
+if ((isset($config['notifications']['smtp']['ssl']) && $config['notifications']['smtp']['ssl'] != "unchecked") || $config['notifications']['smtp']['ssl'] == "checked") {
$mail->SMTPSecure = "ssl";
+}
-if ((isset($config['notifications']['smtp']['tls']) && $config['notifications']['smtp']['tls'] != "unchecked") || $config['notifications']['smtp']['tls'] == "checked")
+if ((isset($config['notifications']['smtp']['tls']) && $config['notifications']['smtp']['tls'] != "unchecked") || $config['notifications']['smtp']['tls'] == "checked") {
$mail->SMTPSecure = "tls";
+}
$mail->Port = empty($config['notifications']['smtp']['port']) ? 25 : $config['notifications']['smtp']['port'];
-if($config['notifications']['smtp']['username'] &&
- $config['notifications']['smtp']['password']) {
+if ($config['notifications']['smtp']['username'] && $config['notifications']['smtp']['password']) {
$mail->SMTPAuth = true;
$mail->Username = $config['notifications']['smtp']['username'];
$mail->Password = $config['notifications']['smtp']['password'];
@@ -91,7 +94,7 @@ while ($line = fgets($ph)) $mail->Body .= htmlspecialchars($line);
pclose($ph);
$mail->Body .= "</pre>";
-if(!$mail->Send()) {
+if (!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
}
diff --git a/config/apcupsd/apcupsd_status.php b/config/apcupsd/apcupsd_status.php
index a8d3776d..04736c65 100755
--- a/config/apcupsd/apcupsd_status.php
+++ b/config/apcupsd/apcupsd_status.php
@@ -1,8 +1,9 @@
<?php
/*
apcupsd_status.php
- part of pfSense (https://www.pfsense.org/)
- Copyright (C) 2013 Danilo G. Baio <dbaio@bsd.com.br>
+ part of pfSense (https://www.pfSense.org/)
+ Copyright (C) 2013-2015 Danilo G. Baio <dbaio@bsd.com.br>
+ Copyright (C) 2015 ESF, LLC
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -26,66 +27,26 @@
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
-
require("guiconfig.inc");
require_once("apcupsd.inc");
+global $pfs_version;
+$pfs_version = substr(trim(file_get_contents("/etc/version")), 0, 3);
-$pf_version=substr(trim(file_get_contents("/etc/version")),0,3);
-if ($pf_version < 2.0)
- $one_two = true;
-
$pgtitle = "Services: Apcupsd (Status)";
include("head.inc");
-function puts( $arg ) { echo "$arg\n"; }
-
-if (isset($_GET['strapcaccess']))
- $strapcaccess = trim($_GET['strapcaccess']);
-
-?>
-
-<style>
-<!--
-
-input {
- font-family: courier new, courier;
- font-weight: normal;
- font-size: 9pt;
+function puts($arg) {
+ echo "$arg\n";
}
-pre {
- border: 2px solid #435370;
- background: #F0F0F0;
- padding: 1em;
- font-family: courier new, courier;
- white-space: pre;
- line-height: 10pt;
- font-size: 10pt;
+if (isset($_GET['strapcaccess'])) {
+ $strapcaccess = trim($_GET['strapcaccess']);
}
-.label {
- font-family: tahoma, verdana, arial, helvetica;
- font-size: 11px;
- font-weight: bold;
-}
-
-.button {
- font-family: tahoma, verdana, arial, helvetica;
- font-weight: bold;
- font-size: 11px;
-}
+?>
--->
-</style>
-</head>
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
-
- <?php include("fbegin.inc"); ?>
-
- <?php if($one_two): ?>
- <p class="pgtitle"><?=$pgtitle?></font></p>
- <?php endif; ?>
-
+<?php include("fbegin.inc"); ?>
<div id="mainlevel">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
@@ -101,70 +62,79 @@ pre {
</div>
<div id="mainarea" style="padding-top: 0px; padding-bottom: 0px; ">
- <table class="tabcont" width="100%" border="0" cellspacing="0" cellpadding="6">
- <form name="frm_apcupsd_status" method="GET">
+ <form name="frm_apcupsd_status" method="get" action="">
+ <table class="tabcont" width="100%" border="0" cellspacing="0" cellpadding="6">
<tr>
<td width="14%" valign="top" class="vncellreq">Host:</td>
<td width="86%" class="vtable">
- <input name="strapcaccess" type="text" class="formfld unknown" id="strapcaccess" size="22" value="<? echo "{$strapcaccess}"; ?>">
- <br/>
+ <input name="strapcaccess" type="text" class="formfld unknown" id="strapcaccess" size="22" value="<? echo "{$strapcaccess}"; ?>" />
+ <br />
<span class="vexpl">
- Default: <b>localhost</b><br/>
- apcaccess uses apcupsd's inbuilt Network Information Server (NIS) to obtain the current status information <br/>
- from the UPS on the local or remote computer. It is therefore necessary to have the following configuration directives: <br/>
- NETSERVER on<br/>
- NISPORT 3551<br/>
- <br/>
- <?php if ($pf_version < 2.2): ?>
- <input type="Submit" value="Execute" class="formbtn" disabled/>
+ Default: <strong>localhost</strong><br /><br />
+ Note: apcaccess uses apcupsd's inbuilt Network Information Server (NIS) to obtain the current status information<br />
+ from the UPS on the local or remote computer. It is therefore necessary to have the following configuration directives: <br />
+ NETSERVER on<br />
+ NISPORT 3551<br />
+ <br />
+ <?php if ($pfs_version < 2.2): ?>
+ <input type="submit" value="Execute" class="formbtn" disabled="disabled" />
<?php else: ?>
- <input type="Submit" value="Execute" class="formbtn"/>
+ <input type="submit" value="Execute" class="formbtn" />
<?php endif; ?>
</span>
</td>
+
</tr>
- </form>
<tr><td colspan="2">
<?php
$nis_server = check_nis_running_apcupsd();
- if ($pf_version >= 2.2){
- if($strapcaccess) {
+ if ($pfs_version >= 2.2) {
+ if ($strapcaccess) {
echo "Running: apcaccess -h {$strapcaccess} <br/>";
puts("<pre>");
putenv("PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin");
$ph = popen("apcaccess -h {$strapcaccess} 2>&1", "r" );
- while ($line = fgets($ph)) echo htmlspecialchars($line);
+ while ($line = fgets($ph)) {
+ echo htmlspecialchars($line);
+ }
pclose($ph);
puts("</pre>");
- }elseif($nis_server){
- $nisip=(check_nis_ip_apcupsd() != ''? check_nis_ip_apcupsd() : "0.0.0.0");
- $nisport=(check_nis_port_apcupsd() != ''? check_nis_port_apcupsd() : "3551");
+ } elseif ($nis_server) {
+ $nisip = (check_nis_ip_apcupsd() != ''? check_nis_ip_apcupsd() : "0.0.0.0");
+ $nisport = (check_nis_port_apcupsd() != '' ? check_nis_port_apcupsd() : "3551");
echo "Running: apcaccess -h {$nisip}:{$nisport} <br/>";
puts("<pre>");
putenv("PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin");
$ph = popen("apcaccess -h localhost 2>&1", "r" );
- while ($line = fgets($ph)) echo htmlspecialchars($line);
+ while ($line = fgets($ph)) {
+ echo htmlspecialchars($line);
+ }
pclose($ph);
puts("</pre>");
- }else
- echo "Network Information Server (NIS) not running, in order to run apcaccess on localhost, you need to enable it on APCupsd General settings. <br/>";
- }else{
- echo "pfSense version prior to 2.2 runs APCupsd 3.14.10 and apcaccess doesn't accept host parameter. <br/>";
- if ($nis_server){
+ } else {
+ echo "Network Information Server (NIS) not running; in order to run apcaccess on localhost, you need to enable it on APCupsd General settings. <br />";
+ }
+ } else {
+ echo "pfSense version prior to 2.2 runs APCupsd 3.14.10 and apcaccess doesn't accept host parameter. <br />";
+ if ($nis_server) {
puts("<pre>");
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);
+ while ($line = fgets($ph)) {
+ echo htmlspecialchars($line);
+ }
pclose($ph);
puts("</pre>");
- }else
- echo "Network Information Server (NIS) not running, in order to run apcaccess on localhost, you need to enable it on APCupsd General settings. <br/>";
- }
+ } else {
+ echo "Network Information Server (NIS) not running, in order to run apcaccess on localhost, you need to enable it on APCupsd General settings. <br />";
+ }
+ }
?>
</td></tr>
</table>
+ </form>
</div>
<?php
include("fend.inc");