mirror of
https://github.com/novatiq/packages.git
synced 2026-04-29 23:18:42 +01:00
net/nut: Build optional separate packages and ucify
With a LuCI app (of which I have one written) ucification makes sense (and is in fact needed), so ucify the initscripts. Also, rather than making selection of things to include an image a matter of selecting compile-time config options, make optional things into seperate packages that are built in default builds, and leave selection of what to include or not up to the user (e.g. using ImageBuilder, or adding packages via opkg). Signed-off-by: Daniel Dickinson <lede@cshore.thecshore.com>
This commit is contained in:
Executable
+44
@@ -0,0 +1,44 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
# Copyright © 2012 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
START=51
|
||||
|
||||
DEFAULT=/etc/default/nut
|
||||
UPSCGI_C=/var/etc/nut/hosts.conf
|
||||
|
||||
nut_upscgi_add() {
|
||||
local cfg="$1"
|
||||
local upsname
|
||||
local hostname
|
||||
local port
|
||||
local displayname
|
||||
|
||||
config_get upsname "$cfg" upsname
|
||||
config_get hostname "$cfg" hostname localhost
|
||||
config_get port "$cfg" port
|
||||
config_get pass "$cfg" password
|
||||
system="$upsname@$hostname"
|
||||
if [ -n "$port" ]; then
|
||||
system="$system:$port";
|
||||
fi
|
||||
config_get displayname "$cfg" displayname
|
||||
echo "MONITOR $system \"$displayname\"" >> $UPSCGI_C
|
||||
}
|
||||
|
||||
start() {
|
||||
rm -f $UPSCGI_C
|
||||
|
||||
config_load nut_cgi
|
||||
|
||||
config_foreach nut_upscgi_add host
|
||||
|
||||
chmod 640 /var/etc/nut/hosts.conf
|
||||
}
|
||||
|
||||
stop() {
|
||||
rm -f $UPSCGI_C
|
||||
}
|
||||
|
||||
@@ -2,18 +2,170 @@
|
||||
|
||||
START=60
|
||||
USE_PROCD=1
|
||||
UPSMON_C=/var/etc/nut/upsmon.conf
|
||||
|
||||
restart() {
|
||||
stop_service
|
||||
start_service
|
||||
nut_upsmon_conf() {
|
||||
local cfg="$1"
|
||||
|
||||
echo "# Config file automatically generated from UCI config" > $UPSMON_C
|
||||
|
||||
config_get runas "$cfg" runas "nut"
|
||||
[ -n "$runas" ] && echo "RUN_AS_USER $runas" >> $UPSMON_C
|
||||
|
||||
config_get val "$cfg" minsupplies 1
|
||||
echo "MINSUPPLIES $val" >> $UPSMON_C
|
||||
|
||||
config_get val "$cfg" shutdowncmd "/sbin/halt"
|
||||
echo "SHUTDOWNCMD \"$val\"" >> $UPSMON_C
|
||||
|
||||
config_get val "$cfg" notifycmd
|
||||
[ -n "$val" ] && echo "NOTIFYCMD \"$val\"" >> $UPSMON_C
|
||||
|
||||
config_get val "$cfg" pollfreq 5
|
||||
echo "POLLFREQ $val" >> $UPSMON_C
|
||||
|
||||
config_get val "$cfg" pollfreqalert 5
|
||||
echo "POLLFREQALERT $val" >> $UPSMON_C
|
||||
|
||||
config_get val "$cfg" hostsync 15
|
||||
echo "HOSTSYNC $val" >> $UPSMON_C
|
||||
|
||||
config_get val "$cfg" deadtime 15
|
||||
echo "DEADTIME $val" >> $UPSMON_C
|
||||
|
||||
config_get val "$cfg" powerdownflag /var/run/killpower
|
||||
echo "POWERDOWNFLAG $val" >> $UPSMON_C
|
||||
|
||||
config_get val "$cfg" onlinemsg
|
||||
[ -n "$val" ] && echo "NOTIFYMSG ONLINE \"$val\"" >> $UPSMON_C
|
||||
config_get val "$cfg" onbattmsg
|
||||
[ -n "$val" ] && echo "NOTIFYMSG ONBATT \"$val\"" >> $UPSMON_C
|
||||
config_get val "$cfg" lowbattmsg
|
||||
[ -n "$val" ] && echo "NOTIFYMSG LOWBATT \"$val\"" >> $UPSMON_C
|
||||
config_get val "$cfg" fsdmsg
|
||||
[ -n "$val" ] && echo "NOTIFYMSG FSD \"$val\"" >> $UPSMON_C
|
||||
config_get val "$cfg" commokmsg
|
||||
[ -n "$val" ] && echo "NOTIFYMSG COMMOK \"$val\"" >> $UPSMON_C
|
||||
config_get val "$cfg" commbadmsg
|
||||
[ -n "$val" ] && echo "NOTIFYMSG COMMBAD \"$val\"" >> $UPSMON_C
|
||||
config_get val "$cfg" shutdownmsg
|
||||
[ -n "$val" ] && echo "NOTIFYMSG SHUTDOWN \"$val\"" >> $UPSMON_C
|
||||
config_get val "$cfg" replbattmsg
|
||||
[ -n "$val" ] && echo "NOTIFYMSG REPLBATT \"$val\"" >> $UPSMON_C
|
||||
config_get val "$cfg" nocommmsg
|
||||
[ -n "$val" ] && echo "NOTIFYMSG NOCOMM \"$val\"" >> $UPSMON_C
|
||||
config_get val "$cfg" noparentmsg
|
||||
[ -n "$val" ] && echo "NOTIFYMSG NOPARENT \"$val\"" >> $UPSMON_C
|
||||
|
||||
notifylist() {
|
||||
local value="$1"
|
||||
append optval "$value" "+"
|
||||
}
|
||||
|
||||
setnotify() {
|
||||
local cfg="$1"
|
||||
local optname="$2"
|
||||
local optval
|
||||
config_list_foreach "$cfg" "$optname" notifylist
|
||||
if [ -z "$optval" ]; then
|
||||
# If no list fallback to trying option, fallback to default
|
||||
config_get optval "$cfg" "$optname" "$default"
|
||||
if [ -n "$optval" ]; then
|
||||
echo "$optval"
|
||||
else
|
||||
# No default, so do the NUT default
|
||||
echo "SYSLOG"
|
||||
fi
|
||||
else
|
||||
echo "$optval"
|
||||
fi
|
||||
}
|
||||
|
||||
local default optval
|
||||
val=""
|
||||
config_list_foreach "$cfg" defaultnotify notifylist
|
||||
default="$optval"
|
||||
echo "NOTIFYFLAG ONLINE $(setnotify "$cfg" onlinenotify)" >> $UPSMON_C
|
||||
echo "NOTIFYFLAG ONBATT $(setnotify "$cfg" onbattnotify)" >> $UPSMON_C
|
||||
echo "NOTIFYFLAG LOWBATT $(setnotify "$cfg" lowbatnotify)" >> $UPSMON_C
|
||||
echo "NOTIFYFLAG FSD $(setnotify "$cfg" fsdnotify)" >> $UPSMON_C
|
||||
echo "NOTIFYFLAG COMMOK $(setnotify "$cfg" commoknotify)" >> $UPSMON_C
|
||||
echo "NOTIFYFLAG COMMBAD $(setnotify "$cfg" commbadnotify)" >> $UPSMON_C
|
||||
echo "NOTIFYFLAG SHUTDOWN $(setnotify "$cfg" shutdownnotify)" >> $UPSMON_C
|
||||
echo "NOTIFYFLAG REPLBATT $(setnotify "$cfg" repolbattnotify)" >> $UPSMON_C
|
||||
echo "NOTIFYFLAG NOCOMM $(setnotify "$cfg" nocommnotify)" >> $UPSMON_C
|
||||
echo "NOTIFYFLAG NOPARENT $(setnotify "$cfg" noparentnotify)" >> $UPSMON_C
|
||||
|
||||
config_get val "$cfg" rbwarntime 43200
|
||||
echo "RBWARNTIME $val" >> $UPSMON_C
|
||||
|
||||
config_get val "$cfg" nocommwarntime 300
|
||||
echo "NOCOMMWARNTIME $val" >> $UPSMON_C
|
||||
|
||||
config_get val "$cfg" finaldelay 5
|
||||
echo "FINALDELAY $val" >> $UPSMON_C
|
||||
|
||||
config_get val "$cfg" certpath
|
||||
if [ -n "$val" ]; then echo "CERTPATH $val" >> $UPSMON_C; fi
|
||||
|
||||
config_get_bool val "$cfg" certverify 0
|
||||
if [ -n "$val" ]; then echo "CERTVERIFY $val" >> $UPSMON_C; fi
|
||||
|
||||
config_get_bool val "$cfg" forcessl 0
|
||||
if [ -n "$val" ]; then echo "FORCESSL $val" >> $UPSMON_C; fi
|
||||
}
|
||||
|
||||
nut_upsmon_add() {
|
||||
local cfg="$1"
|
||||
local type="$2"
|
||||
local upsname
|
||||
local hostname
|
||||
local port
|
||||
local powervalue
|
||||
local username
|
||||
local password
|
||||
local system
|
||||
|
||||
# If no core config, use defaults
|
||||
[ -r $UPSMON_C ] || nut_upsmon_conf ""
|
||||
|
||||
config_get upsname "$cfg" upsname
|
||||
config_get hostname "$cfg" hostname localhost
|
||||
config_get port "$cfg" port
|
||||
config_get powervalue "$cfg" powervalue 1
|
||||
config_get username "$cfg" username
|
||||
config_get password "$cfg" password
|
||||
system="$upsname@$hostname"
|
||||
if [ -n "$port" ]; then
|
||||
system="$system:$port";
|
||||
fi
|
||||
echo "MONITOR $system $powervalue $username $password $type" >> $UPSMON_C
|
||||
}
|
||||
|
||||
start_service() {
|
||||
upsmon -p
|
||||
[ -d $RUN_D ] || mkdir -p $RUN_D
|
||||
mkdir -p /var/etc/nut
|
||||
chmod 640 /var/etc/nut
|
||||
rm -f $UPSMON_C
|
||||
|
||||
config_load nut_monitor
|
||||
|
||||
config_foreach nut_upsmon_conf upsmon
|
||||
config_foreach nut_upsmon_add master master
|
||||
config_foreach nut_upsmon_add slave slave
|
||||
|
||||
[ -z "$(cat /var/etc/nut/nut.conf)" ] && echo "MODE=netclient" >>/var/etc/nut/nut.conf
|
||||
|
||||
chmod 640 $UPSMON_C
|
||||
chmod 640 /var/etc/nut/nut.conf
|
||||
|
||||
chown ${runas:-root}:$(id -gn ${runas:-root}) $UPSMON_C
|
||||
$DEBUG /usr/sbin/upsmon $UPSMON_OPTIONS
|
||||
}
|
||||
|
||||
stop_service() {
|
||||
upsmon -c stop
|
||||
[ -r $PID_F ] && /usr/sbin/upsmon -c stop
|
||||
rm -f $UPSMON_C
|
||||
}
|
||||
|
||||
reload_service() {
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
uci batch <<EOF
|
||||
set nut_monitor.@upsmon[-1]=upsmon
|
||||
set nut_monitor.@upsmon[-1].notifycmd=/usr/bin/upssched-cmd
|
||||
set nut_monitor.@upsmon[-1].defaultnotify="SYSLOG EXEC"
|
||||
commit nut_monitor
|
||||
EOF
|
||||
|
||||
|
||||
@@ -1,21 +1,146 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
|
||||
# Copyright © 2012 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
START=50
|
||||
|
||||
RUN_D=/var/run
|
||||
PID_F=$RUN_D/upsd.pid
|
||||
UPS_C=/var/etc/nut/ups.conf
|
||||
USERS_C=/var/etc/nut/upsd.users
|
||||
UPSD_C=/var/etc/nut/upsd.conf
|
||||
|
||||
USE_PROCD=1
|
||||
|
||||
restart() {
|
||||
stop_service
|
||||
start_service
|
||||
listen_address() {
|
||||
local cfg="$1"
|
||||
|
||||
config_get address "$cfg" address "::1"
|
||||
config_get port "$cfg" port
|
||||
echo "LISTEN $address $port" >>$UPSD_C
|
||||
}
|
||||
|
||||
upsd_config() {
|
||||
local cfg="$1"
|
||||
local maxage maxconn certfile
|
||||
|
||||
# Note runas support requires you make sure USB device file is readable by
|
||||
# the runas user
|
||||
config_get runas "$cfg" runas
|
||||
|
||||
config_get maxage "$cfg" maxage
|
||||
[ -n "$maxage" ] && echo "MAXAGE $maxage" >>$UPSD_C
|
||||
|
||||
config_get statepath "$cfg" statepath
|
||||
[ -n "$statepath" ] && echo "STATEPATH $statepath" >>$UPSD_C
|
||||
|
||||
config_get maxconn "$cfg" maxconn
|
||||
[ -n "$maxconn" ] && echo "MAXCONN $maxconn" >>$UPSD_C
|
||||
|
||||
#NOTE: certs only apply to SSL-enabled version
|
||||
config_get certfile "$cfg" certfile
|
||||
[ -n "$certfile" ] && echo "CERTFILE $certfile" >>$UPSD_C
|
||||
}
|
||||
|
||||
nut_user_add() {
|
||||
local cfg="$1"
|
||||
local a
|
||||
local val
|
||||
|
||||
config_get val "$cfg" username "$1"
|
||||
echo "[$val]" >> $USERS_C
|
||||
|
||||
config_get val "$cfg" password
|
||||
echo " password = $val" >> $USERS_C
|
||||
|
||||
config_get val "$cfg" actions
|
||||
for a in $val; do
|
||||
echo " actions = $a" >> $USERS_C
|
||||
done
|
||||
|
||||
instcmd() {
|
||||
local val="$1"
|
||||
echo " instcmds = $val" >> $USERS_C
|
||||
}
|
||||
|
||||
config_list_foreach "$cfg" instcmd instcmd
|
||||
|
||||
config_get val "$cfg" upsmon
|
||||
if [ -n "$val" ]; then
|
||||
echo " upsmon $val" >> $USERS_C
|
||||
fi
|
||||
}
|
||||
|
||||
start_service() {
|
||||
upsdrvctl start
|
||||
upsd
|
||||
local runas statepath
|
||||
|
||||
mkdir -p /var/etc/nut
|
||||
chmod -R 750 /var/etc/nut
|
||||
|
||||
rm -f $UPSD_C
|
||||
rm -f $USERS_C
|
||||
rm -f $UPSD_C
|
||||
rm -f /var/etc/nut/nut.conf
|
||||
|
||||
echo "# Config file automatically generated from UCI config" > $UPS_C
|
||||
echo "# Config file automatically generated from UCI config" > $USERS_C
|
||||
echo "# Config file automatically generated from UCI config" > $UPSD_C
|
||||
|
||||
local in_driver have_drivers
|
||||
config_cb() {
|
||||
if [ "$1" != "driver" ]; then
|
||||
in_driver=
|
||||
else
|
||||
echo "[$2]" >> $UPS_C
|
||||
in_driver=true
|
||||
have_drivers=true
|
||||
fi
|
||||
}
|
||||
option_cb() {
|
||||
if [ "$in_driver" = "true" ]; then
|
||||
echo " $1 = $2" >> $UPS_C
|
||||
fi
|
||||
}
|
||||
|
||||
config_load nut_server
|
||||
|
||||
config_foreach nut_user_add user
|
||||
config_foreach upsd_config upsd
|
||||
config_foreach listen_address listen_address
|
||||
|
||||
echo "MODE=netserver" >>/var/etc/nut/nut.conf
|
||||
|
||||
chmod 0640 $USERS_C
|
||||
chmod 0640 $UPS_C
|
||||
chmod 0640 $UPSD_C
|
||||
chmod 0640 /var/etc/nut/nut.conf
|
||||
|
||||
if [ -n "$runas" ]; then
|
||||
chown -R $runas:$(id -gn $runas) /var/etc/nut
|
||||
fi
|
||||
|
||||
if [ "$have_drivers" = "true" ]; then
|
||||
$DEBUG /usr/sbin/upsd ${runas:+-u $runas} $OPTIONS
|
||||
$DEBUG /usr/sbin/upsdrvctl ${runas:+-u $runas} start
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
nut_driver_stop() {
|
||||
local cfg="$1"
|
||||
local driver
|
||||
|
||||
config_get driver "$cfg" driver
|
||||
|
||||
[ -r /var/run/$driver-$cfg ] && /usr/sbin/upsdrvctl stop $cfg
|
||||
}
|
||||
|
||||
stop_service() {
|
||||
upsd -c stop
|
||||
upsdrvctl stop
|
||||
[ -r $PID_F ] && /usr/sbin/upsd -c stop
|
||||
config_load ups
|
||||
config_foreach nut_driver_stop driver
|
||||
}
|
||||
|
||||
reload_service() {
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
#config host
|
||||
# option upsname upsname
|
||||
# option hostname localhost
|
||||
# option port # optional port number
|
||||
# option displayname "Display Name"
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
#config upsmon 'upsmon'
|
||||
# option runas run-as-user
|
||||
# option minsupplies 1
|
||||
# option shutdowncmd /sbin/halt
|
||||
# option notifycmd /path/to/cmd
|
||||
# list defaultnotify SYSLOG
|
||||
# option pollfreq 5
|
||||
# option pollfreqalert 5
|
||||
# option hostsync 15
|
||||
# option deadtime 15
|
||||
# option powerdownflags /var/run/killpower
|
||||
# option onlinemsg "online message"
|
||||
# option onbattmsg "on battery message"
|
||||
# option lowbattmsg "low battery message"
|
||||
# option fsdmsg "forced shutdown message"
|
||||
# option comokmsg "communications restored message"
|
||||
# option combadmsg "communications bad message"
|
||||
# option shutdowmsg "shutdown message"
|
||||
# option replbattmsg "replace battery message"
|
||||
# option nocommmsg "no communications message"
|
||||
# option noparentmsg "no parent message"
|
||||
# option onlinenotify "online notify flag 1|0"
|
||||
# option onbattnotify "on battery notify flag 1|0"
|
||||
# option lowbattnotify "low battery notify flag 1|0"
|
||||
# option fsdnotify "forced shutdown notify flag 1|0"
|
||||
# option comoknotify "communications restored notify flag 1|0"
|
||||
# option combadnotify "communications bad notify flag 1|0"
|
||||
# option shutdownotify "shutdown notify flag 1|0"
|
||||
# option replbattnotify "replace battery notify flag 1|0"
|
||||
# option nocommnotify "no communications notify flag 1|0"
|
||||
# option noparentnotify "no parent notify flag 1|0"
|
||||
# option rbwarntime 4200 # replace battery warn time
|
||||
# option nocommwarntime 300 # no communications warn time
|
||||
# option finaldelay 5 # final delay
|
||||
# option certpath /path/to/ca/dir
|
||||
# option certverify 0
|
||||
# option forcessl 0
|
||||
|
||||
#config master
|
||||
# option upsname upsname
|
||||
# option hostname localhost
|
||||
# option port # optional port number
|
||||
# option powervalue 1
|
||||
# option username upsuser
|
||||
# option password upspassword
|
||||
|
||||
#config slave
|
||||
# option upsname upsname
|
||||
# option hostname localhost
|
||||
# option port # optional port number
|
||||
# option powervalue 1
|
||||
# option username upsuser
|
||||
# option password upspassword
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
#config driver 'upsname'
|
||||
# option driver usbhid-ups
|
||||
# option port auto
|
||||
# option other other-value
|
||||
# option runas root
|
||||
|
||||
#config user
|
||||
# option username upsuser
|
||||
# option password upspassword
|
||||
# option actions optional-action
|
||||
# list instcmd optional-instant-command
|
||||
# option upsmon slave|master
|
||||
|
||||
#config listen_address
|
||||
# option address ::1
|
||||
# option port 3493
|
||||
|
||||
#config upsd 'upsd'
|
||||
# option maxage 15
|
||||
# option statepath /var/run/nut
|
||||
# option maxconn 1024
|
||||
# NB: certificates only apply to SSL-enabled version
|
||||
# option certfile /usr/local/etc/upsd.pem
|
||||
Reference in New Issue
Block a user