#!/bin/sh

. /lib/functions.sh

nut_driver_config() {
	local cfg="$1"
	local nomatch="$2"

	config_get runas "$cfg" runas "nut"
	config_get vendorid "$cfg" vendorid
	config_get productid "$cfg" productid

	[ "$ACTION" = "add" ] &&[ -n "$DEVNAME" ] && {
		chmod 0660 /dev/"$DEVNAME"
		chown ${runas:-root}:$(id -gn "${runas:-root}") /dev/"$DEVNAME"
	}

	if [ "$(printf "%04x" 0x"$pvendid")" = "$vendorid" ] && \
		[ "$(printf "%04x" 0x"$pprodid")" = "$productid" ]; then
			[ "$ACTION" = "add" ] && {
				/etc/init.d/nut-server start "$cfg"
			}
			[ "$ACTION" = "remove" ] && {
				/etc/init.d/nut-server stop "$cfg"
			}
			found=1
	elif [ "$nomatch" = "1" ]; then
		[ "$ACTION" = "add" ] && {
			/etc/init.d/nut-server start "$cfg"
		}
		[ "$ACTION" = "remove" ] && {
			/etc/init.d/nut-server stop "$cfg"
		}
	fi
}

perform_libhid_action() {
	local vendorid productid runas
	local pvendid pprodid found

	pvendid=${PRODUCT%/*}
	pvendid=${pvendid%/*}
	pprodid=${PRODUCT%/*}
	pprodid=${pprodid##*/}

	config_load nut_server
	config_foreach nut_driver_config driver 0
	[ "$found" != "1" ] && config_foreach nut_driver_config driver 1
}

[ -n "$PRODUCT" ] && case "$PRODUCT" in
3f0/0001/* | \
3f0/1f01/* | \
3f0/1f02/* | \
3f0/1f06/* | \
3f0/1f08/* | \
3f0/1f09/* | \
3f0/1f0a/* | \
3f0/1fe0/* | \
3f0/1fe1/* | \
3f0/1fe2/* | \
3f0/1fe3/* | \
3f0/1fe5/* | \
3f0/1fe6/* | \
3f0/1fe7/* | \
3f0/1fe8/* | \
463/0001/* | \
463/ffff/* | \
47c/ffff/* | \
483/0035/* | \
4b4/5500/* | \
4d8/d004/* | \
4d8/d005/* | \
50d/0375/* | \
50d/0551/* | \
50d/0750/* | \
50d/0751/* | \
50d/0900/* | \
50d/0910/* | \
50d/0912/* | \
50d/0980/* | \
50d/0f51/* | \
50d/1100/* | \
51d/0000/* | \
51d/0002/* | \
51d/0003/* | \
592/0002/* | \
592/0004/* | \
5b8/0000/* | \
665/5161/* | \
6da/0002/* | \
6da/0003/* | \
6da/0004/* | \
6da/0005/* | \
6da/0201/* | \
6da/0601/* | \
6da/ffff/* | \
75d/0300/* | \
764/0005/* | \
764/0501/* | \
764/0601/* | \
925/1234/* | \
9ae/0001/* | \
9ae/1003/* | \
9ae/1007/* | \
9ae/1008/* | \
9ae/1009/* | \
9ae/1010/* | \
9ae/2005/* | \
9ae/2007/* | \
9ae/2008/* | \
9ae/2009/* | \
9ae/2010/* | \
9ae/2011/* | \
9ae/2012/* | \
9ae/2013/* | \
9ae/2014/* | \
9ae/3008/* | \
9ae/3009/* | \
9ae/3010/* | \
9ae/3011/* | \
9ae/3012/* | \
9ae/3013/* | \
9ae/3014/* | \
9ae/3015/* | \
9ae/3016/* | \
9ae/4001/* | \
9ae/4002/* | \
9ae/4003/* | \
9ae/4004/* | \
9ae/4005/* | \
9ae/4006/* | \
9ae/4007/* | \
9ae/4008/* | \
d9f/0001/* | \
d9f/0004/* | \
d9f/00a2/* | \
d9f/00a3/* | \
d9f/00a4/* | \
d9f/00a5/* | \
d9f/00a6/* | \
f03/0001/* | \
10af/0001/* | \
10af/0004/* | \
10af/0008/* | \
14f0/00c9/* | \
2b2d/ffff/* | \
ffff/0000/* | \
"")
	[ -d /var/run/nut ] && [ ! -f /var/run/nut/disable-hotplug ] && \
		/etc/init.d/nut-server enabled &&  perform_libhid_action
	;;
esac
