diff --git a/gosa-plugins/systems/admin/systems/class_filterSYSTEMS.inc b/gosa-plugins/systems/admin/systems/class_filterSYSTEMS.inc
index 9a4df16eeb27569d603c3be6cd70cc0f159d48fe..bb01370f966603ac9c37eabb0b499655db816fc1 100644 (file)
static function query($base, $scope, $filter, $attributes, $category, $objectStorage= "")
{
- $entries = filterLDAP::query($base, $scope, $filter, $attributes, $category, $objectStorage);
+ $ui = get_userinfo();
+ global $config;
+ // Check whether the arp handling active or not
+ $arp_handling_active = ($config->search("ArpNewDevice","CLASS",array('tabs')) != "");
+
+ $entries = filterLDAP::query($base, $scope, $filter, $attributes, $category, $objectStorage);
foreach($entries as $key => $entry){
if(preg_match("/".preg_quote(get_ou('systemIncomingRDN'),'/')."/i", $entry['dn'])){
}elseif(in_array('gotoTerminal', $entry['objectClass'])){
$entries[$key]['objectClass'][] = 'FAKE_OC_NewTerminal';
$entries[$key]['cn'][0].= " <i>("._("New terminal").")</i>";
- }elseif(in_array('GOhard', $entry['objectClass']) && !isset($entry['gotoMode'][0])){
- $entries[$key]['objectClass'][] = 'FAKE_OC_NewUnknownDevice';
+ }elseif($arp_handling_active &&
+ in_array('GOhard', $entry['objectClass']) &&
+ !isset($entry['gotoMode'][0])){
+ $entries[$key]['objectClass'][] = 'FAKE_OC_ArpNewDevice';
$entries[$key]['cn'][0].= " <i>("._("New unknown device").")</i>";
}elseif(in_array('GOhard', $entry['objectClass'])){
$entries[$key]['objectClass'][] = 'FAKE_OC_NewDevice';
}elseif(in_array('sambaSamAccount', $entry['objectClass']) && preg_match("/\$$/", $entry['cn'][0])){
$entries[$key]['objectClass'][] = 'FAKE_OC_winstation';
- // Detect Workstation templates
+ // Detect Workstation & templates
}elseif(in_array('gotoWorkstation', $entry['objectClass'])){
if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
- $entries[$key]['objectClass'][] = 'FAKE_OC_WorkstationTemplate';
+ continue; // We do not need templates anymore, we've ogroups now.
+ //$entries[$key]['objectClass'][] = 'FAKE_OC_WorkstationTemplate';
+ }
+ $pwd_acl = $ui->get_permissions($entry['dn'],'workstation/workgeneric','userPassword');
+ if(preg_match("/w/",$pwd_acl)){
+ $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
}
- // Detect Terminal templates
+ // Detect Terminal & templates
}elseif(in_array('gotoTerminal', $entry['objectClass'])){
if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
- $entries[$key]['objectClass'][] = 'FAKE_OC_TerminalTemplate';
+ continue; // We do not need templates anymore, we've ogroups now.
+ //$entries[$key]['objectClass'][] = 'FAKE_OC_TerminalTemplate';
+ }
+ $pwd_acl = $ui->get_permissions($entry['dn'],'terminal/termgeneric','userPassword');
+ if(preg_match("/w/",$pwd_acl)){
+ $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
}
- // Detect Server templates
+ // Detect Server & templates
}elseif(in_array('goServer', $entry['objectClass'])){
if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
- $entries[$key]['objectClass'][] = 'FAKE_OC_ServerTemplate';
+ continue; // We do not need templates anymore, we've ogroups now.
+ //$entries[$key]['objectClass'][] = 'FAKE_OC_ServerTemplate';
+ }
+ $pwd_acl = $ui->get_permissions($entry['dn'],'server/servgeneric','userPassword');
+ if(preg_match("/w/",$pwd_acl)){
+ $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
+ }
+
+ // Detect ieee802Device
+ }elseif(in_array('ieee802Device', $entry['objectClass'])){
+ $pwd_acl = $ui->get_permissions($entry['dn'],'component/componentGeneric','userPassword');
+ if(preg_match("/w/",$pwd_acl)){
+ $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
}
}
class_available('opsi') &&
$base == $config->current['BASE']){
+ // Get filter regex ...
+ $regex = "";
+ if(preg_match("/\(cn=[^\)\$]*\)/", $filter)){
+ $regex = trim(preg_replace("/^.*\(cn=([^\)\$]*)\).*$/","\\1", $filter),"* ");
+ }
+
// Check ACLs and opsi handle
$opsi_acl = $ui->get_permissions($base,"opsi/opsiProperties");
$opsi = new opsi($config);
msg_dialog::display(_("Error"),msgPool::siError($opsi->get_error()),ERROR_DIALOG);
}else{
foreach($opsi_clients as $entry){
- $entry['objectClass'] = array("FAKE_OC_OpsiHost");
- $item = array('count' => count($entry));
- foreach($entry as $name => $value){
- $item[] = $name;
- $item[$name] = $value;
+ if(empty($regex) || preg_match('/'.preg_quote($regex,'/').'/i',$entry['cn'])){
+ $entry['objectClass'] = array("FAKE_OC_OpsiHost");
+ $item = array('count' => count($entry));
+ foreach($entry as $name => $value){
+ $item[] = $name;
+ $item[$name] = $value;
+ }
+ $entries[] = $item;
}
- $entries[] = $item;
}
}
}