1<?php 2 3/** 4 * Observium 5 * 6 * This file is part of Observium. 7 * 8 * @package observium 9 * @subpackage discovery 10 * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2019 Observium Limited 11 * 12 */ 13 14// Discover an entity by populating/updating a database table and returning an id 15 16function discover_entity($device_id, $entity_type, $data) 17{ 18 19 if (is_array($GLOBALS['config']['entities'][$entity_type])) { 20 21 $def = $GLOBALS['config']['entities'][$entity_type]; 22 $index = $data[$def['table_fields']['index']]; 23 $params = $def['params']; 24 25 if (isset($params['table_fields']['index']) && is_array()) 26 { 27 28 29 30 } elseif (isset($params['table_fields']['index'])) { 31 32 } else { 33 34 } 35 36 37 38 if (is_array($GLOBALS['cache'][$def['table']][$index])) { 39 echo 'Exists'; 40 41 $db = $GLOBALS['cache'][$def['table']][$index]; 42 $id = $db[$def['table_fields']['id']]; 43 44 echo 'exists:'.$id.PHP_EOL; 45 46 $update = array(); 47 foreach ($params as $param) 48 { 49 if ($data[$param] != $db[$param]) { $update[$param] = $data[$param]; } 50 } 51 if (count($update)) 52 { 53 dbUpdate($update, $def['table'], '`'.$def['table_fields']['id'].'` = ?', array($id)); 54 echo('U'); 55 } else { 56 echo('.'); 57 } 58 59 } else { 60 61 echo 'Doesnt Exist'; 62 63 $insert = array(); 64 $insert['device_id'] = $device_id; 65 foreach ($params as $param) 66 { 67 $insert[$param] = $data[$param]; 68 if ($data[$param] == NULL) { $insert[$param] = array('NULL'); } 69 } 70 $id = dbInsert($insert, $def['table']); 71 echo("+"); 72 73 $params[$def['table_fields']['id']] = $id; 74 75 // Populate cache with this entry. Maybe we need it. 76 $GLOBALS['cache'][$def['table']][$index] = $params; 77 78 } 79 80 } else { 81 82 print_error("Entity Type does not exist. This is a relatively serious error."); 83 84 return FALSE; 85 86 } 87 88 return $id; 89 90} 91 92 93// Discover WIFI Access Point. Returns ap_id. 94 95function discover_wifi_ap($device_id, $ap) 96{ 97 98 $params = array('ap_index', 'ap_number', 'ap_name', 'ap_serial', 'ap_model', 'ap_location', 'ap_fingerprint', 'ap_status'); 99 100 if (is_array($GLOBALS['cache']['wifi_aps'][$ap['ap_index']])) 101 { 102 // Database entry exists. Lets update it! 103 104 $ap_db = $GLOBALS['cache']['wifi_aps'][$ap['ap_index']]; 105 $ap_id = $ap_db['wifi_ap_id']; 106 107 echo 'exists:'.$ap_id.PHP_EOL; 108 109 $update = array(); 110 foreach ($params as $param) 111 { 112 if ($ap[$param] != $ap_db[$param]) { $update[$param] = $ap[$param]; } 113 } 114 if (count($update)) 115 { 116 dbUpdate($update, 'wifi_aps', '`wifi_ap_id` = ?', array($ap_db['wifi_ap_id'])); 117 echo('U'); 118 } else { 119 echo('.'); 120 } 121 122 } else { 123 124 // Database entry doesn't exist. Lets create it! 125 126 $insert = array(); 127 $insert['device_id'] = $device_id; 128 foreach ($params as $param) 129 { 130 $insert[$param] = $ap[$param]; 131 if ($ap[$param] == NULL) { $insert[$param] = array('NULL'); } 132 } 133 $ap_id = dbInsert($insert, 'wifi_aps'); 134 echo("+"); 135 136 $params['ap_wifi_id'] = $ap_id; 137 138 // Populate cache with this entry. Maybe we need it. 139 $GLOBALS['cache']['wifi_aps'][$ap['ap_index']] = $params; 140 141 } 142 143 return $ap_id; 144 145} 146 147 148function discover_wifi_wlan($device_id, $wlan) 149{ 150 151 $params = array('wlan_admin_status', 'wlan_beacon_period', 'wlan_bssid', 'wlan_bss_type', 'wlan_channel', 'wlan_dtim_period', 'wlan_frag_thresh', 152 'wlan_index', 'wlan_igmp_snoop', 'wlan_name', 'wlan_prot_mode', 'wlan_radio_mode', 'wlan_rts_thresh', 153 'wlan_ssid', 'wlan_ssid_bcast', 'wlan_vlan_id'); 154 155 if (is_array($GLOBALS['cache']['wifi_wlans'][$wlan['wlan_index']])) 156 { 157 // Database entry exists. Lets update it! 158 $wlan_db = $GLOBALS['cache']['wifi_wlans'][$wlan['wlan_index']]; 159 $wlan_id = $wlan_db['wlan_id']; 160 161 $update = array(); 162 foreach ($params as $param) 163 { 164 if ($wlan[$param] != $wlan_db[$param]) { $update[$param] = $wlan[$param]; } 165 } 166 if (count($update)) 167 { 168 dbUpdate($update, 'wifi_wlans', '`wlan_id` = ?', array($wlan_db['wlan_id'])); 169 echo('U'); 170 } else { 171 echo('.'); 172 } 173 174 } else { 175 // Database entry doesn't exist. Lets create it! 176 177 $insert = array(); 178 $insert['device_id'] = $device_id; 179 foreach ($params as $param) 180 { 181 $insert[$param] = $wlan[$param]; 182 if (is_null($wlan[$param])) { $insert[$param] = array('NULL'); } 183 } 184 $wlan_id = dbInsert($insert, 'wifi_wlans'); 185 echo("+"); 186 187 } 188 189 return $wlan_id; 190 191} 192 193function discover_wifi_radio($device_id, $radio) 194{ 195 $params = array('radio_ap', 'radio_mib','radio_number', 'radio_util', 'radio_type', 'radio_status', 'radio_clients', 'radio_txpower', 'radio_channel', 'radio_mac', 'radio_protection', 'radio_bsstype'); 196 197 if (is_array($GLOBALS['cache']['wifi_radios'][$radio['radio_ap']][$radio['radio_number']])) { $radio_db = $GLOBALS['cache']['wifi_radios'][$radio['radio_ap']][$radio['radio_number']]; } 198 199 if (!isset($radio_db['wifi_radio_id'])) 200 { 201 $insert = array(); 202 $insert['device_id'] = $device_id; 203 foreach ($params as $param) 204 { 205 $insert[$param] = $radio[$param]; 206 if (is_null($radio[$param])) { $insert[$param] = array('NULL'); } 207 } 208 $wifi_radio_id = dbInsert($insert, 'wifi_radios'); 209 echo("+"); 210 } else { 211 $update = array(); 212 foreach ($params as $param) 213 { 214 if ($radio[$param] != $radio_db[$param]) { $update[$param] = $radio[$param]; } 215 } 216 if (count($update)) 217 { 218 dbUpdate($update, 'wifi_radios', '`wifi_radio_id` = ?', array($radio_db['wifi_radio_id'])); 219 echo('U'); 220 } else { 221 echo('.'); 222 } 223 } 224 225 $GLOBALS['valid']['wifi']['radio'][$radio['radio_mib']][$wifi_radio_id] = 1; // FIXME. What? How it passed there? 226} 227 228// EOF 229