From 5e9076706f159ae2d8289d478bda89e1f517e41d Mon Sep 17 00:00:00 2001 From: Julio Camargo Date: Thu, 21 Mar 2019 07:50:00 -0300 Subject: [PATCH] APU LED Plugin PR; closes #1269 --- sysutils/apuled/+POST_INSTALL | 18 ++++ sysutils/apuled/LICENSE | 25 ++++++ sysutils/apuled/Makefile | 7 ++ sysutils/apuled/README.md | 18 ++++ sysutils/apuled/pkg-descr | 2 + .../src/etc/rc.syshook.d/early/30-apuled | 42 ++++++++++ .../src/etc/rc.syshook.d/start/60-apuled | 11 +++ .../src/opnsense/scripts/apuled/apuledctl | 82 +++++++++++++++++++ .../conf/actions.d/actions_apuled.conf | 6 ++ 9 files changed, 211 insertions(+) create mode 100644 sysutils/apuled/+POST_INSTALL create mode 100644 sysutils/apuled/LICENSE create mode 100644 sysutils/apuled/Makefile create mode 100644 sysutils/apuled/README.md create mode 100644 sysutils/apuled/pkg-descr create mode 100755 sysutils/apuled/src/etc/rc.syshook.d/early/30-apuled create mode 100755 sysutils/apuled/src/etc/rc.syshook.d/start/60-apuled create mode 100755 sysutils/apuled/src/opnsense/scripts/apuled/apuledctl create mode 100644 sysutils/apuled/src/opnsense/service/conf/actions.d/actions_apuled.conf diff --git a/sysutils/apuled/+POST_INSTALL b/sysutils/apuled/+POST_INSTALL new file mode 100644 index 000000000..a2e28a44d --- /dev/null +++ b/sysutils/apuled/+POST_INSTALL @@ -0,0 +1,18 @@ +LED1="/dev/led/led1" +LED2="/dev/led/led2" +LED3="/dev/led/led3" +LEDKO="/boot/kernel/apuled.ko" + +if [ ! -e /boot/kernel/apuled.ko ]; then + exit 0 +fi + +kldload $LEDKO 2>&1 + +echo "m-" > $LED1 +echo "m -" > $LED2 +echo "m -" > $LED3 +sleep 2 +echo 1 > $LED1 +echo 1 > $LED2 +echo 1 > $LED3 diff --git a/sysutils/apuled/LICENSE b/sysutils/apuled/LICENSE new file mode 100644 index 000000000..e902dbd01 --- /dev/null +++ b/sysutils/apuled/LICENSE @@ -0,0 +1,25 @@ +BSD 2-Clause License + +Copyright (c) 2019, Cloudfence +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/sysutils/apuled/Makefile b/sysutils/apuled/Makefile new file mode 100644 index 000000000..f6821168b --- /dev/null +++ b/sysutils/apuled/Makefile @@ -0,0 +1,7 @@ +PLUGIN_NAME= apuled +PLUGIN_VERSION= 0.1 +PLUGIN_DEVEL= yes +PLUGIN_COMMENT= PC Engine APU LED control +PLUGIN_MAINTAINER= julio@cloudfence.com.br + +.include "../../Mk/plugins.mk" diff --git a/sysutils/apuled/README.md b/sysutils/apuled/README.md new file mode 100644 index 000000000..ab9d82384 --- /dev/null +++ b/sysutils/apuled/README.md @@ -0,0 +1,18 @@ +### APU LED Plugin ### + +#### LED control for PC Engines APU platform OPNsense plugin #### + +**Left -> Right** +LED1|LED2|LED3 + +At system boot, the 3 LEDs will blink (leds test). + +| | LED1 | LED2 | LED3 | +|---------------------------------------|----------|---------------------------|------| +| System booting... | Blinking | OFF | OFF | +| System OK | ON | ON | ON | +| CPU Load > 90% | Blinking | - | - | +| Disk freespace < 10% | - | Blinking (SOS morse code) | - | +| WAN offline (without Internet access) | - | Blinking fast | - | +| WAN packetloss > 30% | - | Blinking slow | - | +| WAN online (Internet access) | - | ON | - | diff --git a/sysutils/apuled/pkg-descr b/sysutils/apuled/pkg-descr new file mode 100644 index 000000000..78d0bae2e --- /dev/null +++ b/sysutils/apuled/pkg-descr @@ -0,0 +1,2 @@ +LED control for PC Engines APU platform OPNsense plugin +Cloudfence 2019 - JCC diff --git a/sysutils/apuled/src/etc/rc.syshook.d/early/30-apuled b/sysutils/apuled/src/etc/rc.syshook.d/early/30-apuled new file mode 100755 index 000000000..182dfdc4e --- /dev/null +++ b/sysutils/apuled/src/etc/rc.syshook.d/early/30-apuled @@ -0,0 +1,42 @@ +#!/bin/sh +set -x +# APU LED plugin - Cloudfence 2019 JCC + + +# LEDs +LED1="/dev/led/led1" +LED2="/dev/led/led2" +LED3="/dev/led/led3" +LEDKO="/boot/kernel/apuled.ko" + + +messages() +{ +MSG=$1 +echo "$MSG" +logger -t "APU Plugin" "$MSG" +} + +# check if the module file exists +if [ -e /boot/kernel/apuled.ko ];then +# Load module + kldload $LEDKO 2>&1 +else + messages "Error: APU LED module is missing" + exit 1 +fi + +# starting boot LED message +# make the initial test +echo "m-" > $LED1 +echo "m -" > $LED2 +echo "m -" > $LED3 +sleep 2 +echo 1 > $LED1 +echo 1 > $LED2 +echo 1 > $LED3 +sleep 2 +# PWR bliking to show booting state +echo "f6" > $LED1 +echo 0 > $LED2 +echo 0 > $LED3 diff --git a/sysutils/apuled/src/etc/rc.syshook.d/start/60-apuled b/sysutils/apuled/src/etc/rc.syshook.d/start/60-apuled new file mode 100755 index 000000000..ceac7245b --- /dev/null +++ b/sysutils/apuled/src/etc/rc.syshook.d/start/60-apuled @@ -0,0 +1,11 @@ +#!/bin/sh + +# LEDs +LED1="/dev/led/led1" +LED2="/dev/led/led2" +LED3="/dev/led/led3" + +#stop blinking PWR LED +echo 1 > $LED1 +echo 1 > $LED2 +echo 1 > $LED3 diff --git a/sysutils/apuled/src/opnsense/scripts/apuled/apuledctl b/sysutils/apuled/src/opnsense/scripts/apuled/apuledctl new file mode 100755 index 000000000..522a52e84 --- /dev/null +++ b/sysutils/apuled/src/opnsense/scripts/apuled/apuledctl @@ -0,0 +1,82 @@ +#!/bin/sh +# +# Copyright (c) 2019 Cloudfence - Julio Camargo (JCC) +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +# LEDs +LED1="/dev/led/led1" +LED2="/dev/led/led2" +LED3="/dev/led/led3" + +# check if LEDs exists +if [ ! -e "$LED1" ];then + logger -t "APULED Plugin" "Error: LED device not exists" +fi + +check_wan(){ +# check internet connection +# ping f.root-servers.net +# LED2 - network notifications +# XXX fix this IP? +PING_CHECK=$(ping -t 3 -c 3 192.5.5.241 | grep "packet loss" | awk '{print $7}' | cut -d. -f1) +# ok +if [ "$PING_CHECK" -eq 0 ];then + echo "1" > $LED2 +# latency +elif [ "$PING_CHECK" -gt 30 ] && [ "$PING_CHECK" -lt 100 ];then + echo "f3" > $LED2 +# link down +elif [ "$PING_CHECK" -eq 100 ];then + echo "f1" > $LED2 +fi +} + +check_load(){ +# check CPU idle +# LED1 - system notifications +CHK_IDLE=$(vmstat 1 2 | tail -1 | awk '{ print $19 }') + +if [ "$CHK_IDLE" -lt "10" ];then + echo "f4" > $LED1 +else + echo "1" > $LED1 +fi +} + +check_disk(){ +# check Disk space +# LED3 - system notifications +DSK_FREE=$(df -kh / | tail -1 | awk '{ print 100-$5 }') + +if [ "$DSK_FREE" -lt "10" ];then + echo "m...---..." > $LED3 +else + echo "1" > $LED3 +fi +} + +# Main routine +check_wan +check_load +check_disk diff --git a/sysutils/apuled/src/opnsense/service/conf/actions.d/actions_apuled.conf b/sysutils/apuled/src/opnsense/service/conf/actions.d/actions_apuled.conf new file mode 100644 index 000000000..a876901a8 --- /dev/null +++ b/sysutils/apuled/src/opnsense/service/conf/actions.d/actions_apuled.conf @@ -0,0 +1,6 @@ +[run] +command:/usr/local/opnsense/scripts/apuled/apuledctl +parameters: +type:script +message:APU LEDs control +description:APULED LED status