aboutsummaryrefslogtreecommitdiffstats
path: root/config/gwled/gwled.inc
diff options
context:
space:
mode:
authorjim-p <jimp@pfsense.org>2011-08-10 16:32:07 -0400
committerjim-p <jimp@pfsense.org>2011-08-10 16:32:07 -0400
commita2b3c8ca6bdbaadf032513d354c3c2658e49fa28 (patch)
treef5ece99ef1da4ade233a2885ef170cc19fc4d70b /config/gwled/gwled.inc
parente59953342fc399c119766363a3815f7335b07951 (diff)
downloadpfsense-packages-a2b3c8ca6bdbaadf032513d354c3c2658e49fa28.tar.gz
pfsense-packages-a2b3c8ca6bdbaadf032513d354c3c2658e49fa28.tar.bz2
pfsense-packages-a2b3c8ca6bdbaadf032513d354c3c2658e49fa28.zip
Add gwled package that lets you use LED2/3 to show a gateway's status.
Diffstat (limited to 'config/gwled/gwled.inc')
-rw-r--r--config/gwled/gwled.inc70
1 files changed, 70 insertions, 0 deletions
diff --git a/config/gwled/gwled.inc b/config/gwled/gwled.inc
new file mode 100644
index 00000000..35038034
--- /dev/null
+++ b/config/gwled/gwled.inc
@@ -0,0 +1,70 @@
+<?php
+require_once("functions.inc");
+
+function gwled_running () {
+ return ((int)exec('pgrep -f gwled | wc -l') > 0);
+}
+
+function sync_package_gwled() {
+ global $config;
+ $gwled_config = $config['installedpackages']['gwled']['config'][0];
+ /* kill all instances of gwled */
+ if(gwled_running()) {
+ gwled_stop();
+ }
+ gwled_start();
+}
+
+function gwled_start() {
+ global $config;
+ $gwled_config = $config['installedpackages']['gwled']['config'][0];
+ if (!($gwled_config['enable']))
+ return;
+
+ if (($gwled_config['enable_led2']) && ($gwled_config['gw_led2'])
+ || ($gwled_config['enable_led3']) && ($gwled_config['gw_led3']))
+ mwexec("/usr/local/bin/minicron 30 /var/run/gwled.pid /usr/local/bin/gwled.php");
+}
+
+function gwled_stop() {
+ exec("/bin/pkill -9 -f gwled");
+}
+
+function validate_form_gwled($post, $input_errors) {
+ /* Make sure both aren't using the same interface */
+ if (($post['gw_led2']) && ($post['gw_led3']) &&
+ (($post['enable_led2']) && ($post['enable_led3'])) &&
+ ($post['gw_led2'] == $post['gw_led3']))
+ $input_errors[] = 'You cannot set two LEDs for a single gateway. Please choose seperate interfaces.';
+}
+
+function gwled_get_gateways() {
+ $gateways = return_gateways_array();
+
+ foreach ($gateways as $gateway) {
+ $tmp["name"] = "{$gateway['name']} (Monitor: {$gateway['monitor']})";
+ $tmp["value"] = $gateway['name'];
+ $gws[] = $tmp;
+ }
+ return $gws;
+}
+
+function gwled_set_status($gateway, $led) {
+ $a_gateways = return_gateways_array();
+ $gateways_status = array();
+ $gateways_status = return_gateways_status(true);
+ if ($gateways_status[$gateway]) {
+ $status = $gateways_status[$gateway]['status'];
+ if (stristr($status, "down"))
+ led_blink($led, "veryfast");
+ elseif (stristr($status, "loss"))
+ led_blink($led, "fast");
+ elseif (stristr($status, "delay"))
+ led_blink($led, "medium");
+ elseif ($status == "none")
+ led_on($led);
+ } else
+ led_on($led);
+}
+
+?>