<packagegui> <name>softflowd</name> <version>0.9.8</version> <title>softflowd: Settings</title> <aftersaveredirect>pkg_edit.php?xml=softflowd.xml&id=0</aftersaveredirect> <menu> <name>softflowd</name> <tooltiptext>Modify softflowd settings.</tooltiptext> <section>Services</section> <configfile>softflowd.xml</configfile> <url>/pkg_edit.php?xml=softflowd.xml&id=0</url> </menu> <service> <name>softflowd</name> <rcfile>softflowd.sh</rcfile> <executable>softflowd</executable> <description>Netflow export daemon</description> </service> <configpath>installedpackages->package->$packagename->configuration->settings</configpath> <fields> <field> <fielddescr>Interface</fielddescr> <fieldname>interface</fieldname> <type>interfaces_selection</type> <description>Pick an interface from which to collect netflow data. A separate instance of softflowd will be launched for each interface.</description> <multiple/> </field> <field> <fielddescr>Host</fielddescr> <fieldname>host</fieldname> <description>Specify the host to which datagrams will be sent.</description> <type>input</type> </field> <field> <fielddescr>Port</fielddescr> <fieldname>port</fieldname> <description>Enter the port to which datagrams will be sent.</description> <type>input</type> </field> <field> <fielddescr>Max Flows</fielddescr> <fieldname>maxflows</fieldname> <description>Specify the maximum number of flows to concurrently track before older flows are expired. Default: 8192.</description> <type>input</type> </field> <field> <fielddescr>Netflow version</fielddescr> <fieldname>version</fieldname> <description>Select the desired version of the NetFlow protocol.</description> <type>select</type> <options> <option> <name>9</name> <value>9</value> </option> <option> <name>5</name> <value>5</value> </option> <option> <name>1</name> <value>1</value> </option> </options> </field> </fields> <custom_php_global_functions> <![CDATA[ function sync_package_softflowd() { conf_mount_rw(); config_lock(); global $config; $cf = $config['installedpackages']['softflowd']['config'][0]; $interface_list = explode(",", $cf['interface']); if (!empty($cf['host']) && !empty($interface_list)) { $cf['host'] = is_ipaddrv6($cf['host']) ? "[{$cf['host']}]" : $cf['host']; $start = "/usr/bin/killall -9 softflowd"; foreach ($interface_list as $interface_friendly) { if (empty($interface_friendly)) continue; $interface = get_real_interface($interface_friendly); if (empty($interface)) continue; $start .= "\n\t/usr/local/sbin/softflowd "; $start .= " -i {$interface}"; $start .= " -n {$cf['host']}:{$cf['port']}"; if (is_numeric($cf['maxflows'])) $start .= " -m {$cf['maxflows']}"; if ($cf['version'] != "") $start .= " -v {$cf['version']}"; $start .= " -p /var/run/softflowd.{$interface}.pid"; $start .= " -c /var/run/softflowd.{$interface}.ctl"; } write_rcfile(array( "file" => "softflowd.sh", "start" => $start, "stop" => "/usr/bin/killall -9 softflowd" ) ); restart_service("softflowd"); } conf_mount_ro(); config_unlock(); } function validate_form_softflowd($post, $input_errors) { if (($post['host'] == "") || !is_ipaddr($post['host'])) $input_errors[] = 'You must specify a valid ip address in the \'Host\' field'; if (($post['port'] == "") || !is_port($post['port'])) $input_errors[] = 'You must specify a valid port number in the \'Port\' field'; } function cleanup_config_softflowd() { global $a_pkg; $pffconf = array(); if (is_array($a_pkg)) { foreach($a_pkg as $cf) { if ($cf['host'] != "") { $pffconf = $cf; } } } $a_pkg = array(); $a_pkg[0] = $pffconf; } ]]> </custom_php_global_functions> <custom_php_resync_config_command> sync_package_softflowd(); </custom_php_resync_config_command> <custom_php_validation_command> validate_form_softflowd($_POST, &$input_errors); </custom_php_validation_command> <custom_php_command_before_form> cleanup_config_softflowd(); </custom_php_command_before_form> </packagegui>