diff options
Diffstat (limited to 'packages/lcdproc')
-rw-r--r-- | packages/lcdproc/lcdproc.inc | 99 | ||||
-rw-r--r-- | packages/lcdproc/lcdproc.xml | 78 |
2 files changed, 177 insertions, 0 deletions
diff --git a/packages/lcdproc/lcdproc.inc b/packages/lcdproc/lcdproc.inc new file mode 100644 index 00000000..b453dccd --- /dev/null +++ b/packages/lcdproc/lcdproc.inc @@ -0,0 +1,99 @@ +<?php + require_once("config.inc"); + require_once("functions.inc"); + + /* LCDproc */ + + function lcdproc_notice ($msg) { syslog(LOG_NOTICE, "lcdproc: {$msg}"); } + function lcdproc_warn ($msg) { syslog(LOG_WARNING, "lcdproc: {$msg}"); } + + function lcdproc_running () { + if((int)exec('pgrep lcdproc | wc -l') > 0) + return true; + return false; + } + + function lcdproc_write_config($file, $text) { + $handle = fopen($file, 'w'); + if(!$handle) { + lcdproc_warn("Could not open {$file} for writing."); + exit; + } + fwrite($handle, $text); + fclose($handle); + } + + function before_form_lcdproc($pkg) { + global $config; + + config_lock(); + + config_unlock(); + } + + function validate_form_lcdproc($post, $input_errors) { + if($post['comport']) { + switch($post['comport']) { + case "none": + continue; + break; + case "com2": + continue; + break; + case "ucom1": + continue; + break; + case "ucom2": + continue; + break; + default: + $input_errors[] = "The chosen com port is not valid"; + break; + } + } + } + + function sync_package_lcdproc() { + global $config; + global $input_errors; + + config_lock(); + + $lcdproc_config = $config['installedpackages']['lcdproc']['config'][0]; + $config_file = '/var/etc/lcdd.conf'; + + + /* since config is written before this file invoked we don't need to read post data */ + if($lcdproc_config['enable'] && ($lcdproc_config['comport'] != "none")) { + $config_text = "[server]\n"; + $config_text .= "Driver={$lcdproc_config[driver]}\n"; + + /* if lcdproc not running start it */ + if(!lcdproc_running()) { + lcdproc_notice("Starting service lcdproc"); + lcdproc_action('start'); + } + /* or restart lcdproc if settings were changed */ + elseif($_POST['comport']) { + lcdproc_notice("Restarting service lcdproc"); + lcdproc_action('restart'); + } + } + + if((! $lcdproc_config['comport']) || ($lcdproc_config['comport'] == "none")) { + /* no parameters user does not want lcdproc running */ + /* lets stop the service and remove the rc file */ + + if(file_exists($config_file)) { + if(!$lcdproc_config['enable']) { + lcdproc_notice('Stopping service: lcdproc disabled'); + } else { + lcdproc_notice('Stopping service: no com port selected'); + } + lcdproc_action('stop'); + unlink($config_file); + } + } + config_unlock(); + } +?> diff --git a/packages/lcdproc/lcdproc.xml b/packages/lcdproc/lcdproc.xml new file mode 100644 index 00000000..68affd47 --- /dev/null +++ b/packages/lcdproc/lcdproc.xml @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="utf-8" ?> +<packagegui> + <title>Services: LCDproc</title> + <namelcdproc</name> + <version>0.5.2_1-p1</version> + <savetext>Save</savetext> + <include_file>/usr/local/pkg/lcdproc.inc</include_file> + <menu> + <name>LCDproc</name> + <tooltiptext>Set LCDproc settings such as display driver and com port</tooltiptext> + <section>Services</section> + <url>/pkg_edit.php?xml=lcdproc.xml&id=0</url> + </menu> + <additional_files_needed> + <item>http://www.pfsense.org/packages/config/lcdproc/lcdproc.inc</item> + <prefix>/usr/local/pkg/</prefix> + <chmod>0755</chmod> + </additional_files_needed> + <service> + <name>lcdproc</name> + <rcfile>lcdproc.sh</rcfile> + <executable>lcdproc</executable> + </service> + <tabs> + <tab> + <text>LCDproc Settings</text> + <url>/pkg_edit.php?xml=lcdproc.xml&id=0</url> + <active/> + </tab> + </tabs> + <fields> + <field> + <fielddescr>Enable LCDproc</fielddescr> + <fieldname>enable</fieldname> + <type>checkbox</type> + </field> + <field> + <fieldname>comport</fieldname> + <fielddescr>Com Port</fieldescr> + <description>Set the com port LCDproc should use.</description> + <type>select</type> + <options> + <option> + <value>none</value> + <name>none</name> + </option> + </options> + <options> + <option> + <value>com2</value> + <name>Serial Com port 2</name> + </option> + </options> + <options> + <option> + <value>ucom1</value> + <name>USB Com port 1</name> + </option> + </options> + <options> + <option> + <value>ucom2</value> + <name>USB Com port 2</name> + </option> + </options> + <default_value>0</default_value> + </field> + </fields> + <custom_php_command_before_form> + before_form_lcdproc(&$pkg); + </custom_php_command_before_form> + <custom_php_validation_command> + validate_form_lcdproc($_POST, &$input_errors); + </custom_php_validation_command> + <custom_php_resync_config_command> + sync_package_lcdproc(); + </custom_php_resync_config_command> +</packagegui> |