1 <?php
3 class filterSYSTEMS {
5 static function query($base, $scope, $filter, $attributes, $category, $objectStorage= "")
6 {
7 $ui = get_userinfo();
8 global $config;
10 // Check whether the arp handling active or not
11 $arp_handling_active = ($config->search("ArpNewDevice","CLASS",array('tabs')) != "");
13 $entries = filterLDAP::query($base, $scope, $filter, $attributes, $category, $objectStorage);
16 foreach($entries as $key => $entry){
17 if(preg_match("/".preg_quote(get_ou('systemIncomingRDN'),'/')."/i", $entry['dn'])){
19 // Detect incoming types
20 if(in_array('gotoWorkstation', $entry['objectClass'])){
21 $entries[$key]['objectClass'][] = 'FAKE_OC_NewWorkstation';
22 $entries[$key]['cn'][0].= " <i>("._("New workstation").")</i>";
23 }elseif(in_array('gotoTerminal', $entry['objectClass'])){
24 $entries[$key]['objectClass'][] = 'FAKE_OC_NewTerminal';
25 $entries[$key]['cn'][0].= " <i>("._("New terminal").")</i>";
26 }elseif($arp_handling_active &&
27 in_array('GOhard', $entry['objectClass']) &&
28 !isset($entry['gotoMode'][0])){
29 $entries[$key]['objectClass'][] = 'FAKE_OC_ArpNewDevice';
30 $entries[$key]['cn'][0].= " <i>("._("New unknown device").")</i>";
31 }elseif(in_array('GOhard', $entry['objectClass'])){
32 $entries[$key]['objectClass'][] = 'FAKE_OC_NewDevice';
33 $entries[$key]['cn'][0].= " <i>("._("New device").")</i>";
34 }
36 // Detect SAMBA machines
37 }elseif(in_array('sambaSamAccount', $entry['objectClass']) && preg_match("/\$$/", $entry['cn'][0])){
38 $entries[$key]['objectClass'][] = 'FAKE_OC_winstation';
40 // Detect Workstation & templates
41 }elseif(in_array('gotoWorkstation', $entry['objectClass'])){
42 if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
43 continue; // We do not need templates anymore, we've ogroups now.
44 //$entries[$key]['objectClass'][] = 'FAKE_OC_WorkstationTemplate';
45 }
46 $pwd_acl = $ui->get_permissions($entry['dn'],'workstation/workgeneric','userPassword');
47 if(preg_match("/w/",$pwd_acl)){
48 $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
49 }
51 // Detect Terminal & templates
52 }elseif(in_array('gotoTerminal', $entry['objectClass'])){
53 if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
54 continue; // We do not need templates anymore, we've ogroups now.
55 //$entries[$key]['objectClass'][] = 'FAKE_OC_TerminalTemplate';
56 }
57 $pwd_acl = $ui->get_permissions($entry['dn'],'terminal/termgeneric','userPassword');
58 if(preg_match("/w/",$pwd_acl)){
59 $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
60 }
62 // Detect Server & templates
63 }elseif(in_array('goServer', $entry['objectClass'])){
64 if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
65 continue; // We do not need templates anymore, we've ogroups now.
66 //$entries[$key]['objectClass'][] = 'FAKE_OC_ServerTemplate';
67 }
68 $pwd_acl = $ui->get_permissions($entry['dn'],'server/servgeneric','userPassword');
69 if(preg_match("/w/",$pwd_acl)){
70 $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
71 }
73 // Detect ieee802Device
74 }elseif(in_array('ieee802Device', $entry['objectClass'])){
75 $pwd_acl = $ui->get_permissions($entry['dn'],'component/componentGeneric','userPassword');
76 if(preg_match("/w/",$pwd_acl)){
77 $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
78 }
79 }
81 // Detect object states
82 foreach(array('gotoWorkstation','gotoTerminal','goServer') as $type){
83 if(in_array($type, $entry['objectClass'])){
85 if(isset($entry['gotoMode'][0]) && preg_match("/locked/i", $entry['gotoMode'][0])){
86 $entries[$key]['objectClass'][] = $type."__IS_LOCKED";
87 }elseif(isset($entry['FAIstate'][0])){
88 switch (preg_replace('/:.*$/', '', $entry['FAIstate'][0])) {
89 case 'error':
90 $state= '__IS_ERROR';
91 break;
92 case 'installing':
93 case 'install':
94 case 'sysinfo':
95 case 'softupdate':
96 case 'scheduledupdate':
97 $state= '__IS_BUSY';
98 break;
99 default: $state ="";
100 }
101 if(!empty($state)) $entries[$key]['objectClass'][] = $type.$state;
102 }
103 }
104 }
105 }
107 return($entries);
108 }
109 }
111 ?>