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 unset($entries[$key]);
44 continue; // We do not need templates anymore, we've ogroups now.
45 //$entries[$key]['objectClass'][] = 'FAKE_OC_WorkstationTemplate';
46 }
47 $pwd_acl = $ui->get_permissions($entry['dn'],'workstation/workgeneric','userPassword');
48 if(preg_match("/w/",$pwd_acl)){
49 $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
50 }
52 // Detect Terminal & templates
53 }elseif(in_array('gotoTerminal', $entry['objectClass'])){
54 if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
55 unset($entries[$key]);
56 continue; // We do not need templates anymore, we've ogroups now.
57 //$entries[$key]['objectClass'][] = 'FAKE_OC_TerminalTemplate';
58 }
59 $pwd_acl = $ui->get_permissions($entry['dn'],'terminal/termgeneric','userPassword');
60 if(preg_match("/w/",$pwd_acl)){
61 $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
62 }
64 // Detect Server & templates
65 }elseif(in_array('goServer', $entry['objectClass'])){
66 if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
67 unset($entries[$key]);
68 continue; // We do not need templates anymore, we've ogroups now.
69 //$entries[$key]['objectClass'][] = 'FAKE_OC_ServerTemplate';
70 }
71 $pwd_acl = $ui->get_permissions($entry['dn'],'server/servgeneric','userPassword');
72 if(preg_match("/w/",$pwd_acl)){
73 $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
74 }
76 // Detect ieee802Device
77 }elseif(in_array('ieee802Device', $entry['objectClass'])){
78 $pwd_acl = $ui->get_permissions($entry['dn'],'component/componentGeneric','userPassword');
79 if(preg_match("/w/",$pwd_acl)){
80 $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
81 }
82 }
84 // Detect object states
85 $state = 'none';
86 foreach(array('gotoWorkstation','gotoTerminal','goServer') as $type){
87 if(in_array($type, $entry['objectClass'])){
89 if(isset($entry['FAIstate'][0])){
90 switch (preg_replace('/:.*$/', '', $entry['FAIstate'][0])) {
91 case 'error':
92 $state= 'error';
93 break;
94 case 'installing':
95 case 'install':
96 case 'sysinfo':
97 case 'softupdate':
98 case 'scheduledupdate':
99 $state= 'busy';
100 break;
101 }
102 }elseif(isset($entry['gotoMode'][0]) && preg_match("/locked/i", $entry['gotoMode'][0])){
103 $state = "locked";
104 }
105 }
106 }
108 if(isset($entries[$key])){
109 $entries[$key][$entries[$key]['count']]= 'state';
110 $entries[$key]['state']= $state;
111 $entries[$key]['count'] ++;
112 }
116 }
117 return($entries);
118 }
119 }
121 ?>