288 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			HTML
		
	
	
	
			
		
		
	
	
			288 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			HTML
		
	
	
	
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 | |
| <html>
 | |
| <head>
 | |
|   <title>Module HowTo - General module options</title>
 | |
|   <link rel="stylesheet" type="text/css" href="style/layout.css">
 | |
| </head>
 | |
| <body>
 | |
| 
 | |
| <p align="center">
 | |
| <script type="text/javascript"><!--
 | |
| google_ad_client = "pub-4179059556107138";
 | |
| google_alternate_ad_url = "http://lam.sourceforge.net/google_adsense_script.html";
 | |
| google_ad_width = 728;
 | |
| google_ad_height = 90;
 | |
| google_ad_format = "728x90_as";
 | |
| google_ad_type = "text_image";
 | |
| google_ad_channel ="";
 | |
| google_page_url = document.location;
 | |
| google_color_border = "EEEEEE";
 | |
| google_color_bg = "FFFFFF";
 | |
| google_color_link = "0000FF";
 | |
| google_color_url = "008000";
 | |
| google_color_text = "000000";
 | |
| //--></script>
 | |
| <script type="text/javascript"
 | |
|   src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
 | |
| </script>
 | |
| </p>
 | |
| 
 | |
| 
 | |
| <div style="text-align: center;">
 | |
| <h1>Module HowTo - General module options<br>
 | |
| </h1>
 | |
| <br>
 | |
| <br>
 | |
| <div style="text-align: left;"><br>
 | |
| <h2>1. Account types<br>
 | |
| </h2>
 | |
| LAM currently provides three account types: <span
 | |
|  style="font-weight: bold;">users, groups, hosts<br>
 | |
| </span>A module can manage one or more account types.<br>
 | |
| <br>
 | |
| The types are specified with <span style="font-weight: bold;">can_manage()</span>
 | |
| or <span style="font-weight: bold;">meta['account_types']</span>.<br>
 | |
| <br>
 | |
| <span style="font-weight: bold; text-decoration: underline;">Example:</span><br
 | |
|  style="font-weight: bold; text-decoration: underline;">
 | |
| <br>
 | |
| Our <span style="font-style: italic;">ieee802Device</span>
 | |
| module will be used only for host accounts.<br>
 | |
| <br>
 | |
| <table style="width: 100%; text-align: left;" class="mod-code"
 | |
|  border="0" cellpadding="2" cellspacing="2">
 | |
|   <tbody>
 | |
|     <tr>
 | |
|       <td style="vertical-align: top;">    /**<br>
 | |
|     * Returns meta data that is interpreted by parent
 | |
| class<br>
 | |
|     *<br>
 | |
|     * @return array array with meta data<br>
 | |
|     */<br>
 | |
|     <span style="font-weight: bold;">function</span>
 | |
| get_metaData() {<br>
 | |
|         $return = array();<br>
 | |
|         // manages host accounts<br>
 | |
|       <span style="color: rgb(255, 0, 0);">   
 | |
|     $return["account_types"] = array("host");</span><br
 | |
|  style="color: rgb(255, 0, 0);">
 | |
|         return $return;<br>
 | |
|     }<br>
 | |
|       </td>
 | |
|     </tr>
 | |
|   </tbody>
 | |
| </table>
 | |
| <br>
 | |
| <br>
 | |
| <h2>2. Base modules<br>
 | |
| </h2>
 | |
| In LDAP every entry needs exactly one <span style="font-style: italic;">structural
 | |
| object class</span>. Therefore all modules which provide a <span
 | |
|  style="font-style: italic;">structural object class</span> are marked
 | |
| as <span style="font-weight: bold;">base module</span>.<br>
 | |
| <br>
 | |
| This is done with <span style="font-weight: bold;">is_base_module()</span>
 | |
| or <span style="font-weight: bold;">meta['is_base']</span>.<br>
 | |
| <br>
 | |
| <span style="font-weight: bold; text-decoration: underline;">Example:</span><br
 | |
|  style="font-weight: bold; text-decoration: underline;">
 | |
| <br>
 | |
| The <span style="font-style: italic;">inetOrgPerson</span>
 | |
| module manages the structural object class "inetOrgPerson" and
 | |
| therefore is a <span style="font-weight: bold;">base module</span>.<br>
 | |
| If your module is not a base module you can skip the meta data for
 | |
| this, default is <span style="font-style: italic;">false</span>.<br>
 | |
| <br>
 | |
| <table style="width: 100%; text-align: left;" class="mod-code"
 | |
|  border="0" cellpadding="2" cellspacing="2">
 | |
|   <tbody>
 | |
|     <tr>
 | |
|       <td style="vertical-align: top;">    /**<br>
 | |
|     * Returns meta data that is interpreted by parent
 | |
| class<br>
 | |
|     *<br>
 | |
|     * @return array array with meta data<br>
 | |
|     */<br>
 | |
|     <span style="font-weight: bold;">function</span>
 | |
| get_metaData() {<br>
 | |
|         $return = array();<br>
 | |
|         // base module<br>
 | |
|       <span style="color: rgb(255, 0, 0);">   
 | |
|     $return["is_base"] = true;</span><br
 | |
|  style="color: rgb(255, 0, 0);">
 | |
|         return $return;<br>
 | |
|     }<br>
 | |
|       </td>
 | |
|     </tr>
 | |
|   </tbody>
 | |
| </table>
 | |
| <br>
 | |
| <br>
 | |
| <h2>3. Alias name</h2>
 | |
| The module name is very limited, therefore every module has an <span
 | |
|  style="font-style: italic;">alias name</span>. This <span
 | |
|  style="font-style: italic;">alias name</span> has no limitations and
 | |
| can be translated. It may contain special characters but make sure that
 | |
| it does not contain HTML special characters like "<".<br>
 | |
| The <span style="font-style: italic;">alias name </span>can be the
 | |
| same for all managed <span style="font-style: italic;">account types</span>
 | |
| or differ for each type.<br>
 | |
| <br>
 | |
| The <span style="font-style: italic;">alias name</span> is specified
 | |
| with <span style="font-weight: bold;">get_alias()</span>
 | |
| or <span style="font-weight: bold;">meta['alias']</span>.<br>
 | |
| <br>
 | |
| <span style="font-weight: bold; text-decoration: underline;">Example:</span><br
 | |
|  style="font-weight: bold; text-decoration: underline;">
 | |
| <br>
 | |
| Our <span style="font-style: italic;">ieee802Device</span>
 | |
| module will get the alias MAC address.<br>
 | |
| <br>
 | |
| <table style="width: 100%; text-align: left;" class="mod-code"
 | |
|  border="0" cellpadding="2" cellspacing="2">
 | |
|   <tbody>
 | |
|     <tr>
 | |
|       <td style="vertical-align: top;">    /**<br>
 | |
|     * Returns meta data that is interpreted by parent
 | |
| class<br>
 | |
|     *<br>
 | |
|     * @return array array with meta data<br>
 | |
|     */<br>
 | |
|     <span style="font-weight: bold;">function</span>
 | |
| get_metaData() {<br>
 | |
|         $return = array();<br>
 | |
|         // manages host accounts<br>
 | |
|       <span style="color: rgb(255, 0, 0);">   
 | |
|     </span>$return["account_types"] = array("host");<br
 | |
|  style="color: rgb(255, 0, 0);">
 | |
|         // alias name<br>
 | |
|       <span style="color: rgb(255, 0, 0);">   
 | |
|     $return["alias"] = _("MAC address");</span><br
 | |
|  style="color: rgb(255, 0, 0);">
 | |
|         return $return;<br>
 | |
|     }<br>
 | |
|       </td>
 | |
|     </tr>
 | |
|   </tbody>
 | |
| </table>
 | |
| <br>
 | |
| <br>
 | |
| <h2>4. Dependencies</h2>
 | |
| Modules can depend on eachother. This is useful if you need to access
 | |
| attributes from other modules or the managed object classes of your
 | |
| module are not structural.<br>
 | |
| <br>
 | |
| The dependencies are specified with <span style="font-weight: bold;">get_dependencies()</span>
 | |
| or <span style="font-weight: bold;">meta['dependencies']</span>.<br>
 | |
| <br>
 | |
| <span style="font-weight: bold; text-decoration: underline;">Example:</span><br
 | |
|  style="font-weight: bold; text-decoration: underline;">
 | |
| <br>
 | |
| Our <span style="font-style: italic;">ieee802Device</span>
 | |
| module depends on the account module (because it is the only structural
 | |
| module at this time).<br>
 | |
| <br>
 | |
| <table style="width: 100%; text-align: left;" class="mod-code"
 | |
|  border="0" cellpadding="2" cellspacing="2">
 | |
|   <tbody>
 | |
|     <tr>
 | |
|       <td style="vertical-align: top;">    /**<br>
 | |
|     * Returns meta data that is interpreted by parent
 | |
| class<br>
 | |
|     *<br>
 | |
|     * @return array array with meta data<br>
 | |
|     */<br>
 | |
|     <span style="font-weight: bold;">function</span>
 | |
| get_metaData() {<br>
 | |
|         $return = array();<br>
 | |
|         // manages host accounts<br>
 | |
|       <span style="color: rgb(255, 0, 0);">   
 | |
|     </span>$return["account_types"] = array("host");<br
 | |
|  style="color: rgb(255, 0, 0);">
 | |
|         // alias name<br>
 | |
|         $return["alias"] = _("MAC
 | |
| address");<br>
 | |
|         // module dependencies<br>
 | |
|       <span style="color: rgb(255, 0, 0);">   
 | |
|     $return['dependencies'] = array('depends' =>
 | |
| array('account'), 'conflicts' => array());</span><br
 | |
|  style="color: rgb(255, 0, 0);">
 | |
|         return $return;<br>
 | |
|     }<br>
 | |
|       </td>
 | |
|     </tr>
 | |
|   </tbody>
 | |
| </table>
 | |
| <br>
 | |
| <br>
 | |
| <h2>5. Messages</h2>
 | |
| There are many situations where you will display messages to the user.
 | |
| The modules should define such messages at a common place to make it
 | |
| easier to modify them without searching the complete file.<br>
 | |
| The <span style="font-style: italic;">baseModule</span> offers the $<span
 | |
|  style="font-weight: bold;">messages</span> variable for this. It
 | |
| should be filled by a function called <span style="font-weight: bold;">load_Messages()</span>.<br>
 | |
| The <span style="font-style: italic;">baseModule</span> will
 | |
| automatically check if you have implemented this function and call it
 | |
| at construction time.<br>
 | |
| <br>
 | |
| <span style="font-weight: bold; text-decoration: underline;">Example:</span><br
 | |
|  style="font-weight: bold; text-decoration: underline;">
 | |
| <br>
 | |
| Now let our <span style="font-style: italic;">ieee802Device</span>
 | |
| module define a message.<br>
 | |
| <br>
 | |
| <table style="width: 100%; text-align: left;" class="mod-code"
 | |
|  border="0" cellpadding="2" cellspacing="2">
 | |
|   <tbody>
 | |
|     <tr>
 | |
|       <td style="vertical-align: top;">    /**<br>
 | |
|     * This function fills the error message array with
 | |
| messages<br>
 | |
|     */<br>
 | |
|     <span style="font-weight: bold;">function</span> <span
 | |
|  style="color: rgb(255, 0, 0);">load_Messages</span>() {<br>
 | |
|         $this->messages['mac'][0] =
 | |
| array('ERROR', 'MAC address is invalid!');  // third array value
 | |
| is set dynamically<br>
 | |
|     }<br>
 | |
|       </td>
 | |
|     </tr>
 | |
|   </tbody>
 | |
| </table>
 | |
| <br>
 | |
| <br>
 | |
| <h2><br>
 | |
| </h2>
 | |
| <h2></h2>
 | |
| <br>
 | |
| <br>
 | |
| <span style="font-weight: bold;"></span>
 | |
| <h2><span style="font-weight: bold;"></span></h2>
 | |
| </div>
 | |
| </div>
 | |
| 
 | |
| <p align="center">
 | |
| <script type="text/javascript"><!--
 | |
| google_ad_client = "pub-4179059556107138";
 | |
| google_alternate_ad_url = "http://lam.sourceforge.net/google_adsense_script.html";
 | |
| google_ad_width = 728;
 | |
| google_ad_height = 90;
 | |
| google_ad_format = "728x90_as";
 | |
| google_ad_type = "text_image";
 | |
| google_ad_channel ="";
 | |
| google_page_url = document.location;
 | |
| google_color_border = "EEEEEE";
 | |
| google_color_bg = "FFFFFF";
 | |
| google_color_link = "0000FF";
 | |
| google_color_url = "008000";
 | |
| google_color_text = "000000";
 | |
| //--></script>
 | |
| <script type="text/javascript"
 | |
|   src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
 | |
| </script>
 | |
| </p>
 | |
| 
 | |
| </body>
 | |
| </html>
 |