function loop_status($lcd) { global $g; global $config; $lcdproc_screens_config = $config['installedpackages']['lcdprocscreens']['config'][0]; $lcdpanel_width = get_lcdpanel_width(); $lcdpanel_height = get_lcdpanel_height(); if (empty($g['product_name'])) { $g['product_name'] = "pfSense"; } $version = @file_get_contents("/etc/version"); $version = trim($version); $refresh_frequency = get_lcdpanel_refresh_frequency(); /* keep a counter to see how many times we can loop */ $i = 1; while ($i) { /* prepare the summary data */ if ($lcdpanel_height >= "4") { $summary_states = split("/", get_pfstate()); $lcd_summary_data = sprintf("%02d%% %02d%% %6d", cpu_usage(), mem_usage(), $summary_states[0]); } else { $lcd_summary_data = ""; } $lcd_cmds = array(); $lcd_cmds[] = "widget_set welcome_scr title_wdgt \"Welcome to\""; $lcd_cmds[] = "widget_set welcome_scr text_wdgt 1 2 {$lcdpanel_width} 2 h 2 \"{$g['product_name']} {$version}\""; add_summary_values($lcd_cmds, "welcome_scr", $lcd_summary_data, $lcdpanel_width); /* process screens to display */ foreach ((array) $lcdproc_screens_config as $name => $screen) { if ($screen != "on") { continue; } switch ($name) { case "scr_time": $time = date("n/j/Y H:i"); $lcd_cmds[] = "widget_set {$name} title_wdgt 1 1 \"+ System Time\""; $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 2 \"{$time}\""; break; case "scr_uptime": $uptime = get_uptime_stats(); $lcd_cmds[] = "widget_set {$name} title_wdgt 1 1 \"+ System Uptime\""; $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 2 \"{$uptime}\""; break; case "scr_hostname": exec("/bin/hostname", $output, $ret); $hostname = $output[0]; $lcd_cmds[] = "widget_set {$name} title_wdgt 1 1 \"+ System Name\""; $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 2 \"{$hostname}\""; break; case "scr_system": $processor = cpu_usage(); $memory = mem_usage(); $lcd_cmds[] = "widget_set {$name} title_wdgt 1 1 \"+ System Stats\""; $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 2 \"CPU {$processor}%, Mem {$memory}%\""; break; case "scr_disk": $disk = disk_usage(); $lcd_cmds[] = "widget_set {$name} title_wdgt 1 1 \"+ Disk Use\""; $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 2 \"Disk {$disk}%\""; break; case "scr_load": $loadavg = get_loadavg_stats(); $lcd_cmds[] = "widget_set {$name} title_wdgt 1 1 \"+ Load Averages\""; $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 2 \"{$loadavg}\""; break; case "scr_states": $states = get_pfstate(); $lcd_cmds[] = "widget_set {$name} title_wdgt 1 1 \"+ Traffic States\""; $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 2 \"Curr/Max {$states}\""; break; case "scr_carp": $carp = get_carp_stats(); $lcd_cmds[] = "widget_set {$name} title_wdgt 1 1 \"+ CARP State\""; $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 2 \"{$carp}\""; break; case "scr_ipsec": $ipsec = get_ipsec_stats(); $lcd_cmds[] = "widget_set {$name} title_wdgt 1 1 \"+ IPsec Tunnels\""; $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 2 \"{$ipsec}\""; break; case "scr_slbd": $slbd = get_slbd_stats(); $lcd_cmds[] = "widget_set {$name} title_wdgt 1 1 \"+ Load Balancer\""; $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 2 \"{$slbd}\""; break; case "scr_interfaces": $interfaces = get_interfaces_stats(); $lcd_cmds[] = "widget_set {$name} title_wdgt 1 1 \"+ Interfaces\""; $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 2 \"{$interfaces}\""; break; case "scr_mbuf": $mbufstats = get_mbuf_stats(); $lcd_cmds[] = "widget_set {$name} title_wdgt 1 1 \"+ MBuf Usage\""; $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 2 \"{$mbufstats}\""; break; case "scr_cpufrequency": $cpufreq = get_cpufrequency(); $lcd_cmds[] = "widget_set {$name} title_wdgt 1 1 \"+ CPU Frequency\""; $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 2 \"{$cpufreq}\""; break; } add_summary_values($lcd_cmds, $name, $lcd_summary_data, $lcdpanel_width); } send_lcd_commands($lcd, $lcd_cmds); sleep($refresh_frequency); $i++; } }
function loop_status($lcd) { global $g; global $config; global $lcdproc_connect_errors; $lcdproc_screens_config = $config['installedpackages']['lcdprocscreens']['config'][0]; $lcdpanel_width = get_lcdpanel_width(); $lcdpanel_height = get_lcdpanel_height(); if (empty($g['product_name'])) { $g['product_name'] = "pfSense"; } $refresh_frequency = get_lcdpanel_refresh_frequency(); /* keep a counter to see how many times we can loop */ $i = 1; while ($i) { /* prepare the summary data */ if ($lcdpanel_height >= "4") { $summary_states = split("/", get_pfstate()); $lcd_summary_data = sprintf("%02d%% %02d%% %6d", cpu_usage(), mem_usage(), $summary_states[0]); if ($lcdpanel_width > "16") { $lcd_summary_data = $lcd_summary_data . sprintf(" %3d%%", get_cpufrequency_perc()); } } else { $lcd_summary_data = ""; } $lcd_cmds = array(); /* initializes the widget counter */ $widget_counter = 0; /* controls the output leds */ if (outputled_enabled_CFontz633()) { $led_output_value = 0; /* LED 1: Interface status */ if (substr_count(get_interfaces_stats(), "Down") > 0) { $led_output_value = $led_output_value + pow(2, 0); } else { $led_output_value = $led_output_value + pow(2, 4); } /* LED 2: CARP status */ switch (outputled_carp()) { case -1: /* CARP disabled */ /* CARP disabled */ case 0: $led_output_value = $led_output_value + pow(2, 1); case 1: $led_output_value = $led_output_value + pow(2, 5); } /* LED 3: CPU Usage */ if (cpu_usage() > 50) { $led_output_value = $led_output_value + pow(2, 2); } else { $led_output_value = $led_output_value + pow(2, 6); } /* LED 4: Gateway status */ switch (outputled_gateway()) { case -1: /* Gateways not configured */ /* Gateways not configured */ case 0: $led_output_value = $led_output_value + 2 ^ 3; case 1: $led_output_value = $led_output_value + 2 ^ 7; } /* Sends the command to the panel */ $lcd_cmds[] = "output {$led_output_value}"; } /* process screens to display */ foreach ((array) $lcdproc_screens_config as $name => $screen) { if ($screen != "on") { continue; } switch ($name) { case "scr_version": $version = get_version(); $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 4 \"{$version}\""; break; case "scr_time": $time = date("n/j/Y H:i"); $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 4 \"{$time}\""; break; case "scr_uptime": $uptime = get_uptime_stats(); $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 4 \"{$uptime}\""; break; case "scr_hostname": exec("/bin/hostname", $output, $ret); $hostname = $output[0]; $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 4 \"{$hostname}\""; break; case "scr_system": $processor = cpu_usage(); $memory = mem_usage(); $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 4 \"CPU {$processor}%, Mem {$memory}%\""; break; case "scr_disk": $disk = disk_usage(); $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 4 \"Disk {$disk}%\""; break; case "scr_load": $loadavg = get_loadavg_stats(); $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 4 \"{$loadavg}\""; break; case "scr_states": $states = get_pfstate(); $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 4 \"Cur/Max {$states}\""; break; case "scr_carp": $carp = get_carp_stats(); $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 4 \"{$carp}\""; break; case "scr_ipsec": $ipsec = get_ipsec_stats(); $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 4 \"{$ipsec}\""; break; case "scr_slbd": $slbd = get_slbd_stats(); $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 4 \"{$slbd}\""; break; case "scr_interfaces": $interfaces = get_interfaces_stats(); $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 4 \"{$interfaces}\""; break; case "scr_mbuf": $mbufstats = get_mbuf_stats(); $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 4 \"{$mbufstats}\""; break; case "scr_cpufrequency": $cpufreq = get_cpufrequency(); $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 {$lcdpanel_width} 2 h 4 \"{$cpufreq}\""; break; case "scr_traffic": get_traffic_stats($in_data, $out_data); $lcd_cmds[] = "widget_set {$name} title_wdgt 1 1 \"{$in_data}\""; $lcd_cmds[] = "widget_set {$name} text_wdgt 1 2 \"{$out_data}\""; break; } if ($name != "scr_traffic_interface") { $widget_counter++; add_summary_values($lcd_cmds, $name, $lcd_summary_data); } } if (send_lcd_commands($lcd, $lcd_cmds)) { $lcdproc_connect_errors = 0; // Reset the error counter } else { //an error occurred return; } if ($refresh_frequency * $widget_counter > 5) { sleep(5); } else { sleep($refresh_frequency * $widget_counter); } $i++; } }