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->pluginEnabled("ArpNewDevice");
13 $entries = filterLDAP::query($base, $scope, $filter, $attributes, $category, $objectStorage);
16 foreach($entries as $key => $entry){
17 if(class_available("ArpNewDevice") &&
18 preg_match("/".preg_quote(get_ou("ArpNewDevice", "systemIncomingRDN"),'/')."/i", $entry['dn'])){
20 // Detect incoming types
21 if(in_array_strict('gotoWorkstation', $entry['objectClass'])){
22 $entries[$key]['objectClass'][] = 'FAKE_OC_NewWorkstation';
23 $entries[$key]['cn'][0].= " <i>("._("New workstation").")</i>";
24 }elseif(in_array_strict('gotoTerminal', $entry['objectClass'])){
25 $entries[$key]['objectClass'][] = 'FAKE_OC_NewTerminal';
26 $entries[$key]['cn'][0].= " <i>("._("New terminal").")</i>";
27 }elseif($arp_handling_active &&
28 in_array_strict('GOhard', $entry['objectClass']) &&
29 !isset($entry['gotoMode'][0])){
30 $entries[$key]['objectClass'][] = 'FAKE_OC_ArpNewDevice';
31 $entries[$key]['cn'][0].= " <i>("._("New unknown device").")</i>";
32 }elseif(in_array_strict('GOhard', $entry['objectClass'])){
33 $entries[$key]['objectClass'][] = 'FAKE_OC_NewDevice';
34 $entries[$key]['cn'][0].= " <i>("._("New device").")</i>";
35 }
37 // Detect SAMBA machines
38 }elseif(in_array_strict('sambaSamAccount', $entry['objectClass']) && preg_match("/\$$/", $entry['cn'][0])){
39 $entries[$key]['objectClass'][] = 'FAKE_OC_winstation';
41 // Detect Workstation & templates
42 }elseif(in_array_strict('gotoWorkstation', $entry['objectClass'])){
43 $pwd_acl = $ui->get_permissions($entry['dn'],'workstation/workgeneric','userPassword');
44 if(preg_match("/w/",$pwd_acl)){
45 $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
46 }
48 // Detect Terminal & templates
49 }elseif(in_array_strict('gotoTerminal', $entry['objectClass'])){
50 $pwd_acl = $ui->get_permissions($entry['dn'],'terminal/termgeneric','userPassword');
51 if(preg_match("/w/",$pwd_acl)){
52 $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
53 }
55 // Detect Server & templates
56 }elseif(in_array_strict('goServer', $entry['objectClass'])){
57 $pwd_acl = $ui->get_permissions($entry['dn'],'server/servgeneric','userPassword');
58 if(preg_match("/w/",$pwd_acl)){
59 $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
60 }
62 // Detect ieee802Device
63 }elseif(in_array_strict('ieee802Device', $entry['objectClass'])){
64 $pwd_acl = $ui->get_permissions($entry['dn'],'component/componentGeneric','userPassword');
65 if(preg_match("/w/",$pwd_acl)){
66 $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
67 }
68 }
70 // Detect object states
71 $state = 'none';
72 foreach(array('gotoWorkstation','gotoTerminal','goServer') as $type){
73 if(in_array_strict($type, $entry['objectClass'])){
75 if(isset($entry['FAIstate'][0])){
76 switch (preg_replace('/:.*$/', '', $entry['FAIstate'][0])) {
77 case 'error':
78 $state= 'error';
79 break;
80 case 'installing':
81 case 'install':
82 case 'sysinfo':
83 case 'softupdate':
84 case 'scheduledupdate':
85 $state= 'busy';
86 break;
87 }
88 }elseif(isset($entry['gotoMode'][0]) && preg_match("/locked/i", $entry['gotoMode'][0])){
89 $state = "locked";
90 }
91 }
92 }
94 if(isset($entries[$key])){
95 $entries[$key][$entries[$key]['count']]= 'state';
96 $entries[$key]['state']= $state;
97 $entries[$key]['count'] ++;
98 }
99 }
100 return($entries);
101 }
102 }
104 ?>