==================== Using legacy plugins ==================== ------- General ------- Legacy type plugins are located in the following location: :: /usr/local/etc/inc/plugins.inc.d/ And contain files with the extension ".inc". All automatically registered functions start with the name of the file (without the extension), followed by the purpose. For example *vpn_configure* would be the *configure* handle in a plugin file name vpn.inc. ----------------- Services ----------------- To register services, the *_services()* function should return a structure containing its name, description and operating properties. :: function myplugin_services() { $service = array(); $service['name'] = 'myservice'; $service['description'] = gettext('My service'); $service['configd']['restart'] = array('myservice restart'); $service['configd']['start'] = array('myservice start'); $service['configd']['stop'] = array('myservice stop'); $services[] = $pconfig; return $services; } For a full list of supported service methods, please inspect *services.inc* ----------------- Syslog ----------------- To register syslog targets, the *_syslog()* function should return a structure containing targets and definitions. :: function myplugin_syslog() { $logfacilities = array(); $logfacilities['myplugin'] = array( 'facility' => array('myplugin'), 'remote' => 'myplugin', ); return $logfacilities; } ----------------- Interface ----------------- To register new (virtual) interfaces, create a function called *_interfaces()*, which should return a named array containing the unique interface name as key (enc0 for ipsec for example). Every item should contain the following properties: +-----------------------+------------------------+--------------------------------------------------------+ | Property | Syntax | Description | +=======================+========================+========================================================+ | enable | boolean | interface enabled, if so it will be saved in the config| +-----------------------+------------------------+--------------------------------------------------------+ | descr | text | User readable description | +-----------------------+------------------------+--------------------------------------------------------+ | networks | array, [network, mask] | list of named arrays containing remote networks | +-----------------------+------------------------+--------------------------------------------------------+ | type | text | "none" | +-----------------------+------------------------+--------------------------------------------------------+ | if | text | physical interface (e.g. enc0) | +-----------------------+------------------------+--------------------------------------------------------+ | virtual | boolean | Virtual interface, true/false | +-----------------------+------------------------+--------------------------------------------------------+ Example: :: function myplugin_interfaces() { global $config; $interfaces = array(); if (isset($config['myplugin']['enable'])) { $oic = array("enable" => true); $oic['if'] = 'tun0'; $oic['descr'] = 'myplugin'; $oic['type'] = "none"; $oic['virtual'] = true; $oic['networks'] = array(); $interfaces['tun0'] = $oic; } return $interfaces; } ----------------- Configure ----------------- When your plugin needs configuration after boot, you can create a function called *_configure()* which will be called upon boot.