File: //usr/lib64/udev/script/ups-check.sh
#!/bin/sh
. /usr/syno/bin/synoupscommon
echo "=== [" `date` "] udev check UPS rule ===" >> $UPS_LOG
vendorID=`echo $PRODUCT | awk -F/ '{printf("0x%04s", $1);}' | sed 's: :0:g'`
productID=`echo $PRODUCT | awk -F/ '{printf("0x%04s", $2);}' | sed 's: :0:g'`
echo "Vendor: $vendorID, Product: $productID, Action: $ACTION" >> $UPS_LOG
{
flock -x 99
if [ $ACTION = add ]; then
if [ -f "$UPS_CONF_BACKUP" ]; then
/bin/cp $UPS_CONF_BACKUP $UPS_CONF
fi
# for Powercom RPT-600AP reconnect randomly
if [ $vendorID = '0x0d9f' -a $productID = '0x0004' ]; then
/bin/sed -i "s/.*pollonly/\tpollonly/" $UPS_CONF
fi
fi
flock -u 99
} 99<>$UPS_LOCK
CheckUPSSupport $vendorID $productID
if [ $? -eq 0 ]; then
logger -p user.err -t "udev" "[UPS] $ACTION USB UPS(PRODUCT=$PRODUCT)"
echo "$ACTION USB UPS(PRODUCT=$PRODUCT)" >> $UPS_LOG
# we should avoid UPS to receive unplug->plug event but finally
# change to plug->unplug. So we add lock until ups-util.sh script
# finished.
RetryTime=5
while [ -f "$UPS_UDEVLOCK" -a $RetryTime -gt 0 ]; do
RetryTime=`expr $RetryTime - 1`
logger -p user.err -t "udev" "ups lock found. $RetryTime times left for waiting..."
sleep 3
done
touch $UPS_UDEVLOCK
echo "support"
exit 0
fi
echo "Device($PRODUCT) is not supported UPS..." >> $UPS_LOG
echo "unsupported"
exit 0