added fix for wrong spelled object classes
This commit is contained in:
parent
c949bd8f86
commit
79a8a315a6
|
@ -229,9 +229,52 @@ is set dynamically<br>
|
||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
<br>
|
<br>
|
||||||
<h2><br>
|
<h2>6. Managed object classes<br>
|
||||||
</h2>
|
</h2>
|
||||||
<h2></h2>
|
<h2></h2>
|
||||||
|
You can tell LAM what object classes are managed by your module.<br>
|
||||||
|
LAM will then check the spelling of the objectClass attributes and
|
||||||
|
correct it automatically. This is useful if other applications (e.g.
|
||||||
|
smbldap-tools) also create accounts and the spelling is differnt.<br>
|
||||||
|
<br>
|
||||||
|
<span style="font-weight: bold; text-decoration: underline;">Example:</span><br>
|
||||||
|
<br>
|
||||||
|
The <span style="font-style: italic;">ieee802Device</span> module
|
||||||
|
manages one object class.<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>
|
||||||
|
|
||||||
|
$return['dependencies'] = array('depends' =>
|
||||||
|
array('account'), 'conflicts' => array());<br>
|
||||||
|
// managed object classes<br>
|
||||||
|
<span style="color: rgb(255, 0, 0);">
|
||||||
|
$return['objectClasses'] = array('ieee802Device');</span><br>
|
||||||
|
return $return;<br>
|
||||||
|
}<br>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
<br>
|
<br>
|
||||||
<br>
|
<br>
|
||||||
<span style="font-weight: bold;"></span>
|
<span style="font-weight: bold;"></span>
|
||||||
|
|
|
@ -123,7 +123,27 @@ The resulting LDAP filter will look like this:
|
||||||
style="font-style: italic;">return "('or' =>
|
style="font-style: italic;">return "('or' =>
|
||||||
'(objectClass=posixAccount)', 'and' => '(!(uid=*$))')"</span></span><br>
|
'(objectClass=posixAccount)', 'and' => '(!(uid=*$))')"</span></span><br>
|
||||||
<span style="font-weight: bold; color: rgb(255, 0, 0);"></span><br>
|
<span style="font-weight: bold; color: rgb(255, 0, 0);"></span><br>
|
||||||
<h3>2.1.5. get_RDNAttributes*</h3>
|
<h3>2.1.5. getManagedObjectClasses*</h3>
|
||||||
|
<br>
|
||||||
|
<table border="0" cellpadding="2" cellspacing="2">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td style="vertical-align: top; text-align: center;"><span
|
||||||
|
style="font-weight: bold;">function getManagedObjectClasses()</span><br>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
Returns an array of object class names which are managed by this module.<br>
|
||||||
|
<span style="font-weight: bold;"></span><br>
|
||||||
|
This is used to fix spelling errors in LDAP-Entries (e.g. if
|
||||||
|
"posixACCOUNT" is read instead of "posixAccount" from LDAP).<br>
|
||||||
|
<br>
|
||||||
|
<span style="font-weight: bold;">Example: <span
|
||||||
|
style="font-style: italic;">return "('posixAccount')"</span></span><br>
|
||||||
|
<span style="font-weight: bold; color: rgb(255, 0, 0);"></span><br>
|
||||||
|
<h3>2.1.6. get_RDNAttributes*</h3>
|
||||||
<br>
|
<br>
|
||||||
<table border="0" cellpadding="2" cellspacing="2">
|
<table border="0" cellpadding="2" cellspacing="2">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -147,8 +167,8 @@ for the RDN selection.<br>
|
||||||
style="font-style: italic;">return "('uid' =>
|
style="font-style: italic;">return "('uid' =>
|
||||||
'normal', 'cn' => 'low')"</span></span><br>
|
'normal', 'cn' => 'low')"</span></span><br>
|
||||||
<br>
|
<br>
|
||||||
<span style="font-weight: bold; color: rgb(255, 0, 0);"></span><br>
|
<span style="font-weight: bold; color: rgb(255, 0, 0);"></span>
|
||||||
<h3>2.1.6. get_dependencies*</h3>
|
<h3>2.1.7. get_dependencies*</h3>
|
||||||
<br>
|
<br>
|
||||||
<table border="0" cellpadding="2" cellspacing="2">
|
<table border="0" cellpadding="2" cellspacing="2">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -178,7 +198,7 @@ your module depends on one of these modules.<br>
|
||||||
=> array("exim"));</span><br
|
=> array("exim"));</span><br
|
||||||
style="font-weight: bold; font-style: italic;">
|
style="font-weight: bold; font-style: italic;">
|
||||||
<br>
|
<br>
|
||||||
<h3>2.1.7. get_metaData()</h3>
|
<h3>2.1.8. get_metaData()</h3>
|
||||||
<br>
|
<br>
|
||||||
<table border="0" cellpadding="2" cellspacing="2">
|
<table border="0" cellpadding="2" cellspacing="2">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -195,7 +215,7 @@ Returns an hash array including meta data for the baseModule.<br>
|
||||||
<span style="font-weight: bold;">Example: return array("is_base" =>
|
<span style="font-weight: bold;">Example: return array("is_base" =>
|
||||||
true);</span><br style="font-weight: bold;">
|
true);</span><br style="font-weight: bold;">
|
||||||
<br>
|
<br>
|
||||||
<h3>2.1.8. get_configOptions()*</h3>
|
<h3>2.1.9. get_configOptions()*</h3>
|
||||||
<br>
|
<br>
|
||||||
<table border="0" cellpadding="2" cellspacing="2">
|
<table border="0" cellpadding="2" cellspacing="2">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -224,7 +244,7 @@ as keywords to load and save settings. We recommend to use the module
|
||||||
name as prefix for them (e.g. posixAccount_homeDirectory) to avoid
|
name as prefix for them (e.g. posixAccount_homeDirectory) to avoid
|
||||||
naming confilcts.<br>
|
naming confilcts.<br>
|
||||||
<br>
|
<br>
|
||||||
<h3>2.1.9. get_configDescriptions()*</h3>
|
<h3>2.1.10. get_configDescriptions()*</h3>
|
||||||
<br>
|
<br>
|
||||||
<table border="0" cellpadding="2" cellspacing="2">
|
<table border="0" cellpadding="2" cellspacing="2">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -249,7 +269,7 @@ array with this format:<br>
|
||||||
'descriptions' => array('option1'
|
'descriptions' => array('option1'
|
||||||
=> 'description1', ...))</span><br>
|
=> 'description1', ...))</span><br>
|
||||||
<br>
|
<br>
|
||||||
<h3>2.1.10. check_configOptions*</h3>
|
<h3>2.1.11. check_configOptions*</h3>
|
||||||
<br>
|
<br>
|
||||||
<table border="0" cellpadding="2" cellspacing="2">
|
<table border="0" cellpadding="2" cellspacing="2">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -277,7 +297,7 @@ If no errors occured the function returns an empty array.<span
|
||||||
style="font-weight: bold;"></span><br>
|
style="font-weight: bold;"></span><br>
|
||||||
<br style="font-weight: bold;">
|
<br style="font-weight: bold;">
|
||||||
<span style="font-weight: bold;"></span>
|
<span style="font-weight: bold;"></span>
|
||||||
<h3>2.1.11. get_scope()</h3>
|
<h3>2.1.12. get_scope()</h3>
|
||||||
<br>
|
<br>
|
||||||
<table border="0" cellpadding="2" cellspacing="2">
|
<table border="0" cellpadding="2" cellspacing="2">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -294,7 +314,7 @@ Returns the account type (user/group/host) of this module object.<br>
|
||||||
<span style="font-weight: bold;">This function is provided by the
|
<span style="font-weight: bold;">This function is provided by the
|
||||||
baseModule and should not be overwritten.</span><br>
|
baseModule and should not be overwritten.</span><br>
|
||||||
<br>
|
<br>
|
||||||
<h3>2.1.12. get_uploadColumns*</h3>
|
<h3>2.1.13. get_uploadColumns*</h3>
|
||||||
<br>
|
<br>
|
||||||
<table border="0" cellpadding="2" cellspacing="2">
|
<table border="0" cellpadding="2" cellspacing="2">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -339,7 +359,7 @@ all values of this column must be different values <span
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<br>
|
<br>
|
||||||
<h3>2.1.13. get_uploadPreDepends*</h3>
|
<h3>2.1.14. get_uploadPreDepends*</h3>
|
||||||
<br>
|
<br>
|
||||||
<table border="0" cellpadding="2" cellspacing="2">
|
<table border="0" cellpadding="2" cellspacing="2">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -355,7 +375,7 @@ Returns a list of module names which must be processed before this
|
||||||
module at builing accounts.<br>
|
module at builing accounts.<br>
|
||||||
The named modules may not be active, LAM will check this automatically.<br>
|
The named modules may not be active, LAM will check this automatically.<br>
|
||||||
<br>
|
<br>
|
||||||
<h3>2.1.14. build_uploadAccounts</h3>
|
<h3>2.1.15. build_uploadAccounts</h3>
|
||||||
<br>
|
<br>
|
||||||
<table border="0" cellpadding="2" cellspacing="2">
|
<table border="0" cellpadding="2" cellspacing="2">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -382,7 +402,7 @@ format is the same as used for ldap_add().<br>
|
||||||
Returns an array which contains sub arrays to generate StatusMessages
|
Returns an array which contains sub arrays to generate StatusMessages
|
||||||
if any errors occured.<br>
|
if any errors occured.<br>
|
||||||
<br>
|
<br>
|
||||||
<h3>2.1.15. do_uploadPostActions</h3>
|
<h3>2.1.16. do_uploadPostActions</h3>
|
||||||
<br>
|
<br>
|
||||||
<table border="0" cellpadding="2" cellspacing="2">
|
<table border="0" cellpadding="2" cellspacing="2">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -428,7 +448,7 @@ array()</span> // List of arrays which are used to generate
|
||||||
StatusMessages<br>
|
StatusMessages<br>
|
||||||
<span style="font-weight: bold;">)</span><br>
|
<span style="font-weight: bold;">)</span><br>
|
||||||
<br>
|
<br>
|
||||||
<h3>2.1.16. get_profileOptions*</h3>
|
<h3>2.1.17. get_profileOptions*</h3>
|
||||||
<br>
|
<br>
|
||||||
<table border="0" cellpadding="2" cellspacing="2">
|
<table border="0" cellpadding="2" cellspacing="2">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -452,7 +472,7 @@ as keywords to load and save profiles. We recommend to use the module
|
||||||
name as prefix for them (e.g. posixAccount_homeDirectory) to avoid
|
name as prefix for them (e.g. posixAccount_homeDirectory) to avoid
|
||||||
naming confilcts.<br>
|
naming confilcts.<br>
|
||||||
<br>
|
<br>
|
||||||
<h3>2.1.17. check_profileOptions*</h3>
|
<h3>2.1.18. check_profileOptions*</h3>
|
||||||
<br>
|
<br>
|
||||||
<table border="0" cellpadding="2" cellspacing="2">
|
<table border="0" cellpadding="2" cellspacing="2">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -476,7 +496,7 @@ head, 2 => message text, 3 => additional variables).<br>
|
||||||
If no errors occured the function returns an empty array.<span
|
If no errors occured the function returns an empty array.<span
|
||||||
style="font-weight: bold;"></span><br>
|
style="font-weight: bold;"></span><br>
|
||||||
<br>
|
<br>
|
||||||
<h3>2.1.18. load_profile*</h3>
|
<h3>2.1.19. load_profile*</h3>
|
||||||
<br>
|
<br>
|
||||||
<table border="0" cellpadding="2" cellspacing="2">
|
<table border="0" cellpadding="2" cellspacing="2">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -934,9 +954,9 @@ of string. This is the list of pre selected elements, must contain
|
||||||
values that are also in <span style="font-style: italic;">options</span>.</li>
|
values that are also in <span style="font-style: italic;">options</span>.</li>
|
||||||
<li><span style="font-weight: bold;">descriptiveOptions:</span>
|
<li><span style="font-weight: bold;">descriptiveOptions:</span>
|
||||||
Boolean value, if set to true then all elements in options
|
Boolean value, if set to true then all elements in options
|
||||||
must be arrays themselves (array(<span
|
must be arrays themselves (array(<span style="font-style: italic;">value</span>,
|
||||||
style="font-style: italic;">value</span>, <span
|
<span style="font-style: italic;">description</span>)) (default:
|
||||||
style="font-style: italic;">description</span>)) (default: false)<br>
|
false)<br>
|
||||||
</li>
|
</li>
|
||||||
<li><span style="font-weight: bold;">size:</span> The size of the
|
<li><span style="font-weight: bold;">size:</span> The size of the
|
||||||
select field, if set to 1 a dropdown box will be displayed.</li>
|
select field, if set to 1 a dropdown box will be displayed.</li>
|
||||||
|
@ -1247,7 +1267,15 @@ array("user", "host")</span><br style="font-weight: bold;">
|
||||||
'objectClass=posixAccount', 'and' => '(!(uid=*$))')<br>
|
'objectClass=posixAccount', 'and' => '(!(uid=*$))')<br>
|
||||||
<br>
|
<br>
|
||||||
</span>
|
</span>
|
||||||
<h3>6.4 get_RDNAttributes()</h3>
|
<h3>6.4 getManagedObjectClasses()</h3>
|
||||||
|
"objectClasses" => array<br>
|
||||||
|
<br>
|
||||||
|
<span style="font-weight: bold;"> Example:</span><span
|
||||||
|
style="font-style: italic; font-weight: bold;"> array('posixAccount')<br>
|
||||||
|
<br>
|
||||||
|
</span>
|
||||||
|
<span style="font-style: italic; font-weight: bold;"></span>
|
||||||
|
<h3>6.5 get_RDNAttributes()</h3>
|
||||||
"RDN" => array<br>
|
"RDN" => array<br>
|
||||||
<br>
|
<br>
|
||||||
<span style="font-weight: bold;"> Example:</span><span
|
<span style="font-weight: bold;"> Example:</span><span
|
||||||
|
@ -1256,7 +1284,7 @@ array("user", "host")</span><br style="font-weight: bold;">
|
||||||
<br>
|
<br>
|
||||||
</span>
|
</span>
|
||||||
<span style="font-style: italic; font-weight: bold;"></span>
|
<span style="font-style: italic; font-weight: bold;"></span>
|
||||||
<h3>6.5 get_dependencies()<br>
|
<h3>6.6 get_dependencies()<br>
|
||||||
</h3>
|
</h3>
|
||||||
"dependencies" => array<br>
|
"dependencies" => array<br>
|
||||||
<br>
|
<br>
|
||||||
|
@ -1268,7 +1296,7 @@ array("user", "host")</span><br style="font-weight: bold;">
|
||||||
=> array("exim")</span></span><span
|
=> array("exim")</span></span><span
|
||||||
style="font-style: italic; font-weight: bold;">)<br>
|
style="font-style: italic; font-weight: bold;">)<br>
|
||||||
</span><br>
|
</span><br>
|
||||||
<h3>6.6 get_profileOptions()<br>
|
<h3>6.7 get_profileOptions()<br>
|
||||||
</h3>
|
</h3>
|
||||||
"profile_options" => array<br>
|
"profile_options" => array<br>
|
||||||
<br>
|
<br>
|
||||||
|
@ -1277,7 +1305,7 @@ array("user", "host")</span><br style="font-weight: bold;">
|
||||||
return value of get_profileOptions().<br>
|
return value of get_profileOptions().<br>
|
||||||
<br>
|
<br>
|
||||||
</span></span>
|
</span></span>
|
||||||
<h3>6.7 check_profileOptions()<br>
|
<h3>6.8 check_profileOptions()<br>
|
||||||
</h3>
|
</h3>
|
||||||
"profile_checks" => array<br>
|
"profile_checks" => array<br>
|
||||||
<br>
|
<br>
|
||||||
|
@ -1352,7 +1380,7 @@ head, 2 => message text, 3 => additional variables)</li>
|
||||||
</ul>
|
</ul>
|
||||||
</ul>
|
</ul>
|
||||||
<br>
|
<br>
|
||||||
<h3>6.8 load_profile()<br>
|
<h3>6.9 load_profile()<br>
|
||||||
</h3>
|
</h3>
|
||||||
"profile_mappings" => array('profile_identifier1'
|
"profile_mappings" => array('profile_identifier1'
|
||||||
=> 'LDAP_attribute1', 'profile_identifier2' => 'LDAP_attribute2')<br>
|
=> 'LDAP_attribute1', 'profile_identifier2' => 'LDAP_attribute2')<br>
|
||||||
|
@ -1361,7 +1389,7 @@ head, 2 => message text, 3 => additional variables)</li>
|
||||||
$this->attributes.<br>
|
$this->attributes.<br>
|
||||||
<span style="font-weight: bold;"><span style="font-style: italic;"><br>
|
<span style="font-weight: bold;"><span style="font-style: italic;"><br>
|
||||||
</span></span>
|
</span></span>
|
||||||
<h3>6.9 get_configOptions()<br>
|
<h3>6.10 get_configOptions()<br>
|
||||||
</h3>
|
</h3>
|
||||||
"config_options" => array('user' => array,
|
"config_options" => array('user' => array,
|
||||||
'host' => array, 'all' => array)<br>
|
'host' => array, 'all' => array)<br>
|
||||||
|
@ -1377,7 +1405,7 @@ the
|
||||||
return value of get_configOptions().<br>
|
return value of get_configOptions().<br>
|
||||||
<br>
|
<br>
|
||||||
</span></span>
|
</span></span>
|
||||||
<h3>6.10 get_configDescriptions()<br>
|
<h3>6.11 get_configDescriptions()<br>
|
||||||
</h3>
|
</h3>
|
||||||
"config_descriptions" => array<br>
|
"config_descriptions" => array<br>
|
||||||
<br>
|
<br>
|
||||||
|
@ -1386,7 +1414,7 @@ return value of get_configOptions().<br>
|
||||||
return value of get_configDescriptions().<br>
|
return value of get_configDescriptions().<br>
|
||||||
<br>
|
<br>
|
||||||
</span></span>
|
</span></span>
|
||||||
<h3>6.11 check_configOptions()<br>
|
<h3>6.12 check_configOptions()<br>
|
||||||
</h3>
|
</h3>
|
||||||
"config_checks" => array('user' => array,
|
"config_checks" => array('user' => array,
|
||||||
'host' => 'array', 'all' => array)<br>
|
'host' => 'array', 'all' => array)<br>
|
||||||
|
@ -1400,14 +1428,14 @@ the other values only if they are inside the <span
|
||||||
check_profileOptions().<br>
|
check_profileOptions().<br>
|
||||||
<br>
|
<br>
|
||||||
</span></span>
|
</span></span>
|
||||||
<h3>6.12 get_uploadColumns()</h3>
|
<h3>6.13 get_uploadColumns()</h3>
|
||||||
"upload_columns" => array()<br>
|
"upload_columns" => array()<br>
|
||||||
<span style="font-weight: bold;"><br>
|
<span style="font-weight: bold;"><br>
|
||||||
<span style="font-style: italic;">Syntax for array is the same as for
|
<span style="font-style: italic;">Syntax for array is the same as for
|
||||||
the
|
the
|
||||||
return value of get_uploadColumns().<br>
|
return value of get_uploadColumns().<br>
|
||||||
</span></span><br>
|
</span></span><br>
|
||||||
<h3>6.13 get_uploadPreDepends()</h3>
|
<h3>6.14 get_uploadPreDepends()</h3>
|
||||||
"upload_preDepends" => array()<br>
|
"upload_preDepends" => array()<br>
|
||||||
<span style="font-weight: bold;"><br>
|
<span style="font-weight: bold;"><br>
|
||||||
<span style="font-style: italic;">Syntax for array is the same as for
|
<span style="font-style: italic;">Syntax for array is the same as for
|
||||||
|
|
|
@ -665,6 +665,17 @@ class baseModule {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a list of managed object classes for this module.
|
||||||
|
* This is used to fix incorrect spelled object class names.
|
||||||
|
*
|
||||||
|
* @return array list of object classes
|
||||||
|
*/
|
||||||
|
function getManagedObjectClasses() {
|
||||||
|
if (isset($this->meta['objectClasses']) && is_array($this->meta['objectClasses'])) return $this->meta['objectClasses'];
|
||||||
|
else return array();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1376,6 +1376,8 @@ class accountContainer {
|
||||||
$attrNames = array_keys($attr);
|
$attrNames = array_keys($attr);
|
||||||
for ($i = 0; $i < sizeof($attrNames); $i++) unset($attr[$attrNames[$i]]['count']);
|
for ($i = 0; $i < sizeof($attrNames); $i++) unset($attr[$attrNames[$i]]['count']);
|
||||||
unset($attr['count']);
|
unset($attr['count']);
|
||||||
|
// fix spelling errors
|
||||||
|
$attr = $this->fixLDAPAttributes($attr, $modules);
|
||||||
// get binary attributes
|
// get binary attributes
|
||||||
$binaryAttr = array('jpegPhoto');
|
$binaryAttr = array('jpegPhoto');
|
||||||
for ($i = 0; $i < sizeof($binaryAttr); $i++) {
|
for ($i = 0; $i < sizeof($binaryAttr); $i++) {
|
||||||
|
@ -1401,6 +1403,49 @@ class accountContainer {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fixes spelling errors in the attribute names.
|
||||||
|
*
|
||||||
|
* @param array $attributes LDAP attributes
|
||||||
|
* @param array $modules list of active modules
|
||||||
|
* @return array fixed attributes
|
||||||
|
*/
|
||||||
|
function fixLDAPAttributes($attributes, $modules) {
|
||||||
|
if (!is_array($attributes)) return $attributes;
|
||||||
|
$keys = array_keys($attributes);
|
||||||
|
// get correct object class names
|
||||||
|
$objectClasses = array();
|
||||||
|
foreach ($modules as $module) {
|
||||||
|
$moduleObj = new $module($this->type);
|
||||||
|
$objectClasses = array_merge($objectClasses, $moduleObj->getManagedObjectClasses());
|
||||||
|
}
|
||||||
|
// check object classes
|
||||||
|
for ($i = 0; $i < sizeof($keys); $i++) {
|
||||||
|
if (strtolower($keys[$i]) == 'objectclass') {
|
||||||
|
// fix object class attribute
|
||||||
|
if ($keys[$i] != 'objectClass') {
|
||||||
|
$temp = $attributes[$keys[$i]];
|
||||||
|
unset($attributes[$keys[$i]]);
|
||||||
|
$attributes['objectClass'] = $temp;
|
||||||
|
}
|
||||||
|
// fix object classes
|
||||||
|
for ($attrClass = 0; $attrClass < sizeof($attributes['objectClass']); $attrClass++) {
|
||||||
|
for ($modClass = 0; $modClass < sizeof($objectClasses); $modClass++) {
|
||||||
|
if (strtolower($attributes['objectClass'][$attrClass]) == strtolower($objectClasses[$modClass])) {
|
||||||
|
if ($attributes['objectClass'][$attrClass] != $objectClasses[$modClass]) {
|
||||||
|
unset($attributes['objectClass'][$attrClass]);
|
||||||
|
$attributes['objectClass'][] = $objectClasses[$modClass];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $attributes;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function will prepare the object for a new account.
|
* This function will prepare the object for a new account.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -59,6 +59,8 @@ class account extends baseModule {
|
||||||
$return["RDN"] = array("uid" => "low");
|
$return["RDN"] = array("uid" => "low");
|
||||||
// module dependencies
|
// module dependencies
|
||||||
$return['dependencies'] = array('depends' => array(), 'conflicts' => array());
|
$return['dependencies'] = array('depends' => array(), 'conflicts' => array());
|
||||||
|
// managed object classes
|
||||||
|
$return['objectClasses'] = array('account');
|
||||||
// available PDF fields
|
// available PDF fields
|
||||||
$return['PDF_fields'] = array(
|
$return['PDF_fields'] = array(
|
||||||
'description'
|
'description'
|
||||||
|
|
|
@ -47,6 +47,8 @@ class ieee802Device extends baseModule {
|
||||||
$return["alias"] = _("MAC address");
|
$return["alias"] = _("MAC address");
|
||||||
// module dependencies
|
// module dependencies
|
||||||
$return['dependencies'] = array('depends' => array(), 'conflicts' => array());
|
$return['dependencies'] = array('depends' => array(), 'conflicts' => array());
|
||||||
|
// managed object classes
|
||||||
|
$return['objectClasses'] = array('ieee802Device');
|
||||||
// help Entries
|
// help Entries
|
||||||
$return['help'] = array(
|
$return['help'] = array(
|
||||||
'mac' => array(
|
'mac' => array(
|
||||||
|
|
|
@ -47,6 +47,8 @@ class inetLocalMailRecipient extends baseModule {
|
||||||
$return["alias"] = _("Mail routing");
|
$return["alias"] = _("Mail routing");
|
||||||
// module dependencies
|
// module dependencies
|
||||||
$return['dependencies'] = array('depends' => array(), 'conflicts' => array());
|
$return['dependencies'] = array('depends' => array(), 'conflicts' => array());
|
||||||
|
// managed object classes
|
||||||
|
$return['objectClasses'] = array('inetLocalMailRecipient');
|
||||||
// help Entries
|
// help Entries
|
||||||
$return['help'] = array(
|
$return['help'] = array(
|
||||||
'routingAdr' => array(
|
'routingAdr' => array(
|
||||||
|
|
|
@ -96,6 +96,8 @@ class inetOrgPerson extends baseModule {
|
||||||
$return["ldap_filter"] = array('or' => "(objectClass=inetOrgPerson)");
|
$return["ldap_filter"] = array('or' => "(objectClass=inetOrgPerson)");
|
||||||
// module dependencies
|
// module dependencies
|
||||||
$return['dependencies'] = array('depends' => array(), 'conflicts' => array());
|
$return['dependencies'] = array('depends' => array(), 'conflicts' => array());
|
||||||
|
// managed object classes
|
||||||
|
$return['objectClasses'] = array('inetOrgPerson');
|
||||||
// profile elements
|
// profile elements
|
||||||
$return['profile_options'] = array(
|
$return['profile_options'] = array(
|
||||||
array(
|
array(
|
||||||
|
|
|
@ -73,6 +73,8 @@ class kolabUser extends baseModule {
|
||||||
$return['dependencies'] = array('depends' => array('inetOrgPerson'), 'conflicts' => array());
|
$return['dependencies'] = array('depends' => array('inetOrgPerson'), 'conflicts' => array());
|
||||||
// LDAP filter
|
// LDAP filter
|
||||||
$return["ldap_filter"] = array('or' => "(objectClass=kolabInetOrgPerson)");
|
$return["ldap_filter"] = array('or' => "(objectClass=kolabInetOrgPerson)");
|
||||||
|
// managed object classes
|
||||||
|
$return['objectClasses'] = array('kolabInetOrgPerson');
|
||||||
// profile options
|
// profile options
|
||||||
$return['profile_options'] = array(
|
$return['profile_options'] = array(
|
||||||
array(
|
array(
|
||||||
|
@ -242,7 +244,6 @@ class kolabUser extends baseModule {
|
||||||
*/
|
*/
|
||||||
function load_attributes($attr) {
|
function load_attributes($attr) {
|
||||||
$this->attributes['objectClass'] = array();
|
$this->attributes['objectClass'] = array();
|
||||||
$this->attributes['macAddress'] = array();
|
|
||||||
$this->orig['objectClass'] = array();
|
$this->orig['objectClass'] = array();
|
||||||
$this->orig['kolabInvitationPolicy'] = array();
|
$this->orig['kolabInvitationPolicy'] = array();
|
||||||
// load Kolab attributes
|
// load Kolab attributes
|
||||||
|
|
|
@ -48,6 +48,8 @@ class ldapPublicKey extends baseModule {
|
||||||
$return["alias"] = _("SSH public key");
|
$return["alias"] = _("SSH public key");
|
||||||
// module dependencies
|
// module dependencies
|
||||||
$return['dependencies'] = array('depends' => array(), 'conflicts' => array());
|
$return['dependencies'] = array('depends' => array(), 'conflicts' => array());
|
||||||
|
// managed object classes
|
||||||
|
$return['objectClasses'] = array('ldapPublicKey');
|
||||||
// help Entries
|
// help Entries
|
||||||
$return['help'] = array(
|
$return['help'] = array(
|
||||||
'key' => array(
|
'key' => array(
|
||||||
|
|
|
@ -53,6 +53,8 @@ class nisMailAlias extends baseModule {
|
||||||
$return["RDN"] = array("cn" => "normal");
|
$return["RDN"] = array("cn" => "normal");
|
||||||
// module dependencies
|
// module dependencies
|
||||||
$return['dependencies'] = array('depends' => array(), 'conflicts' => array());
|
$return['dependencies'] = array('depends' => array(), 'conflicts' => array());
|
||||||
|
// managed object classes
|
||||||
|
$return['objectClasses'] = array('nisMailAlias');
|
||||||
// help Entries
|
// help Entries
|
||||||
$return['help'] = array(
|
$return['help'] = array(
|
||||||
'alias' => array(
|
'alias' => array(
|
||||||
|
|
|
@ -123,6 +123,8 @@ class posixAccount extends baseModule {
|
||||||
$return["alias"] = _("Unix");
|
$return["alias"] = _("Unix");
|
||||||
// RDN attributes
|
// RDN attributes
|
||||||
$return["RDN"] = array("uid" => "normal", "cn" => "low");
|
$return["RDN"] = array("uid" => "normal", "cn" => "low");
|
||||||
|
// managed object classes
|
||||||
|
$return['objectClasses'] = array('posixAccount');
|
||||||
// profile checks
|
// profile checks
|
||||||
$return['profile_checks']['posixAccount_homeDirectory'] = array('type' => 'ext_preg', 'regex' => 'homeDirectory',
|
$return['profile_checks']['posixAccount_homeDirectory'] = array('type' => 'ext_preg', 'regex' => 'homeDirectory',
|
||||||
'error_message' => $this->messages['homeDirectory'][0]);
|
'error_message' => $this->messages['homeDirectory'][0]);
|
||||||
|
|
|
@ -307,6 +307,8 @@ class posixGroup extends baseModule {
|
||||||
$return["RDN"] = array("cn" => "normal");
|
$return["RDN"] = array("cn" => "normal");
|
||||||
// module dependencies
|
// module dependencies
|
||||||
$return['dependencies'] = array('depends' => array(), 'conflicts' => array());
|
$return['dependencies'] = array('depends' => array(), 'conflicts' => array());
|
||||||
|
// managed object classes
|
||||||
|
$return['objectClasses'] = array('posixGroup');
|
||||||
// configuration options
|
// configuration options
|
||||||
$return['config_options']['group'] = array(
|
$return['config_options']['group'] = array(
|
||||||
array(
|
array(
|
||||||
|
|
|
@ -105,6 +105,8 @@ class sambaAccount extends baseModule {
|
||||||
$return["alias"] = _('Samba 2');
|
$return["alias"] = _('Samba 2');
|
||||||
// module dependencies
|
// module dependencies
|
||||||
$return['dependencies'] = array('depends' => array('posixAccount'), 'conflicts' => array());
|
$return['dependencies'] = array('depends' => array('posixAccount'), 'conflicts' => array());
|
||||||
|
// managed object classes
|
||||||
|
$return['objectClasses'] = array('sambaAccount');
|
||||||
// profile options
|
// profile options
|
||||||
if ($this->get_scope() == 'user') {
|
if ($this->get_scope() == 'user') {
|
||||||
// set Unix password for Samba
|
// set Unix password for Samba
|
||||||
|
|
|
@ -53,6 +53,8 @@ class sambaDomain extends baseModule {
|
||||||
$return["ldap_filter"] = array('or' => "(objectClass=sambaDomain)");
|
$return["ldap_filter"] = array('or' => "(objectClass=sambaDomain)");
|
||||||
// module dependencies
|
// module dependencies
|
||||||
$return['dependencies'] = array('depends' => array(), 'conflicts' => array());
|
$return['dependencies'] = array('depends' => array(), 'conflicts' => array());
|
||||||
|
// managed object classes
|
||||||
|
$return['objectClasses'] = array('sambaDomain');
|
||||||
// help Entries
|
// help Entries
|
||||||
$return['help'] = array(
|
$return['help'] = array(
|
||||||
'domainName' => array(
|
'domainName' => array(
|
||||||
|
|
|
@ -232,6 +232,8 @@ class sambaGroupMapping extends baseModule {
|
||||||
$return["alias"] = _('Samba 3');
|
$return["alias"] = _('Samba 3');
|
||||||
// module dependencies
|
// module dependencies
|
||||||
$return['dependencies'] = array('depends' => array('posixGroup'), 'conflicts' => array());
|
$return['dependencies'] = array('depends' => array('posixGroup'), 'conflicts' => array());
|
||||||
|
// managed object classes
|
||||||
|
$return['objectClasses'] = array('sambaGroupMapping');
|
||||||
// available PDF fields
|
// available PDF fields
|
||||||
$return['PDF_fields'] = array(
|
$return['PDF_fields'] = array(
|
||||||
'gidNumber',
|
'gidNumber',
|
||||||
|
|
|
@ -124,6 +124,8 @@ class sambaSamAccount extends baseModule {
|
||||||
$return["RDN"] = array("sambaSID" => "low");
|
$return["RDN"] = array("sambaSID" => "low");
|
||||||
// module dependencies
|
// module dependencies
|
||||||
$return['dependencies'] = array('depends' => array('posixAccount'), 'conflicts' => array());
|
$return['dependencies'] = array('depends' => array('posixAccount'), 'conflicts' => array());
|
||||||
|
// managed object classes
|
||||||
|
$return['objectClasses'] = array('sambaSamAccount');
|
||||||
// profile checks
|
// profile checks
|
||||||
$return['profile_checks']['sambaSamAccount_smbhome'] = array(
|
$return['profile_checks']['sambaSamAccount_smbhome'] = array(
|
||||||
'type' => 'ext_preg',
|
'type' => 'ext_preg',
|
||||||
|
|
|
@ -68,6 +68,8 @@ class shadowAccount extends baseModule {
|
||||||
$return["alias"] = _('Shadow');
|
$return["alias"] = _('Shadow');
|
||||||
// module dependencies
|
// module dependencies
|
||||||
$return['dependencies'] = array('depends' => array('posixAccount'), 'conflicts' => array());
|
$return['dependencies'] = array('depends' => array('posixAccount'), 'conflicts' => array());
|
||||||
|
// managed object classes
|
||||||
|
$return['objectClasses'] = array('shadowAccount');
|
||||||
// lists for expiration date
|
// lists for expiration date
|
||||||
$day = array(); $mon = array(); $year = array();
|
$day = array(); $mon = array(); $year = array();
|
||||||
for ( $i=1; $i<=31; $i++ ) $day[] = $i;
|
for ( $i=1; $i<=31; $i++ ) $day[] = $i;
|
||||||
|
|
Loading…
Reference in New Issue