nut: Optionally set serial USB to NUT user
authorDaniel F. Dickinson <cshored@thecshore.com>
Wed, 5 Dec 2018 06:36:45 +0000 (01:36 -0500)
committerDaniel F. Dickinson <cshored@thecshore.com>
Thu, 6 Dec 2018 08:31:47 +0000 (03:31 -0500)
When using serial-port based UPSes with NUT, it is handy to be able to
configure a USB serial port to have be set tot the NUT runas user, so
that NUT can access the serial port automagically.
Closes #6997

Signed-off-by: Daniel F. Dickinson <cshored@thecshore.com>
net/nut/Makefile
net/nut/files/nut_serial.hotplug [new file with mode: 0644]

index 0074aa060671abb7b251efdeb69860823bab6e16..7405ad20be2dfb1982b2f0b06ac42fd923076412 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=nut
 PKG_VERSION:=2.7.4
-PKG_RELEASE:=11
+PKG_RELEASE:=12
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.networkupstools.org/source/2.7/
@@ -81,6 +81,8 @@ define Package/nut-server/install
        ln -sf /var/etc/nut/ups.conf $(1)/etc/nut/ups.conf
        # Mangle libhid.usermap into a format (hotplug shell script) useful for OpenWrt
        $(INSTALL_DIR) $(1)/etc/hotplug.d/usb
+       $(INSTALL_DIR) $(1)/etc/hotplug.d/tty
+       $(INSTALL_BIN) ./files/nut_serial.hotplug $(1)/etc/hotplug.d/tty/40-nut_serial
        $(INSTALL_BIN) ./files/30-libhid-ups.head $(1)/etc/hotplug.d/usb/30-libhid-ups
        $(CP) $(PKG_INSTALL_DIR)/etc/hotplug/usb/libhid.usermap $(PKG_BUILD_DIR)/30-libhid-ups.middle
        $(SED) '/^$$$$/d' \
diff --git a/net/nut/files/nut_serial.hotplug b/net/nut/files/nut_serial.hotplug
new file mode 100644 (file)
index 0000000..f320d09
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+nut_serial() {
+       local cfg="$cfg"
+       config_get runas upsd runas "nut"
+       config_get_bool enable_usb_serial "$cfg" enable_usb_serial 0
+}
+
+[ "$ACTION" = "add" ] && [ -n "$DEVNAME" ] && [ -z "${DEVNAME%ttyUSB*}" ] && {
+       config load nut_server
+       config_foreach nut_serial driver
+
+       [ -z "$RUNAS" ] && {
+               RUNAS="$runas"
+       }
+
+       [ "$enable_usb_serial" -eq 1 ] && {
+                       chown "${RUNAS:-nut}" /dev/$DEVNAME
+                       chmod g+rw /dev/$DEVNAME
+       }
+}