nut: Fix for nut-upsmon without nut-server 6655/head
authorDaniel F. Dickinson <cshored@thecshore.com>
Thu, 2 Aug 2018 09:10:18 +0000 (05:10 -0400)
committerDaniel F. Dickinson <cshored@thecshore.com>
Thu, 2 Aug 2018 12:40:12 +0000 (08:40 -0400)
nut-monitor failed to create required dir /var/etc/nut, as
well as failing to set appropriate user on the directory and
conf files.  Fixing this closes
https://github.com/openwrt/packages/issues/6644

Signed-off-by: Daniel F. Dickinson <cshored@thecshore.com>
net/nut/Makefile
net/nut/files/nut-monitor.init

index 850c4a9fafa6f49f90cef8f6f86cb9107558c1fb..2a253f8c0849b76dde0d6120801c161d8b0ed60a 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=nut
 PKG_VERSION:=2.7.4
-PKG_RELEASE:=6
+PKG_RELEASE:=7
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.networkupstools.org/source/2.7/
index 388c376ee9e5d048942470db900926a253b80ca6..af814078106534f4848d8be2fae67175f397aebd 100755 (executable)
@@ -126,8 +126,11 @@ nut_upsmon_add() {
        local password
        local system
 
-       # If no core config, use defaults
-       [ -r $UPSMON_C ] || nut_upsmon_conf ""
+       # if UPSMON_C is a symlink we're only doing generated config
+       [ -L $UPSMON_C ] && {
+               rm -f $UPSMON_C
+               nut_upsmon_conf ""
+       }
 
        config_get upsname "$cfg" upsname
        config_get hostname "$cfg" hostname localhost
@@ -143,7 +146,8 @@ nut_upsmon_add() {
 }
 
 start_service() {
-       rm -f $UPSMON_C
+       mkdir -p "$(dirname "$UPSMON_C")"
+       chmod 750 "$(dirname "$UPSMON_C")"
 
        config_load nut_monitor
 
@@ -156,20 +160,22 @@ start_service() {
        chmod 640 $UPSMON_C
        chmod 640 /var/etc/nut/nut.conf
 
+       chown ${runas:-root}:$(id -gn ${runas:-root}) /var/etc/nut
+       chown ${runas:-root}:$(id -gn ${runas:-root}) /var/etc/nut/nut.conf
+       chown ${runas:-root}:$(id -gn ${runas:-root}) $UPSMON_C
+
        [ -d /var/run/nut ] || {
                mkdir -m 0750 -p /var/run/nut
                chown ${runas:-root}:$(id -gn ${runas:-root}) /var/run/nut
        }
 
-       chown ${runas:-root}:$(id -gn ${runas:-root}) $UPSMON_C
-       $DEBUG /usr/sbin/upsmon $UPSMON_OPTIONS
+       exec $DEBUG /usr/sbin/upsmon $UPSMON_OPTIONS
 }
 
 stop_service() {
-       [ -r $PID_F ] && /usr/sbin/upsmon -c stop
-       rm -f $UPSMON_C
+       exec /usr/sbin/upsmon -c stop
 }
 
 reload_service() {
-       upsmon -c reload
+       exec /usr/sbin/upsmon -c reload
 }