hasGlobalAdmin()) { $response = [ 'status' => 'error', 'message' => 'Need to be admin', ]; echo json_encode($response, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); exit; } $status = 'ok'; $message = ''; $device_id = $_POST['device_id']; $id = $_POST['ccustomoid_id']; $action = $_POST['action']; $name = $_POST['name']; $oid = $_POST['oid']; $datatype = $_POST['datatype']; if (empty(($_POST['unit']))) { $unit = ['NULL']; } else { $unit = $_POST['unit']; } if (! empty(($_POST['limit'])) && is_numeric($_POST['limit'])) { $limit = $_POST['limit']; } else { $limit = ['NULL']; } if (! empty(($_POST['limit_warn'])) && is_numeric($_POST['limit_warn'])) { $limit_warn = $_POST['limit_warn']; } else { $limit_warn = ['NULL']; } if (! empty(($_POST['limit_low'])) && is_numeric($_POST['limit_low'])) { $limit_low = $_POST['limit_low']; } else { $limit_low = ['NULL']; } if (! empty(($_POST['limit_low_warn'])) && is_numeric($_POST['limit_low_warn'])) { $limit_low_warn = $_POST['limit_low_warn']; } else { $limit_low_warn = ['NULL']; } if ($_POST['alerts'] == 'on') { $alerts = 1; } else { $alerts = 0; } if ($_POST['passed'] == 'on') { $passed = 1; } else { $passed = 0; } if (! empty(($_POST['divisor'])) && is_numeric($_POST['divisor'])) { $divisor = $_POST['divisor']; } else { $divisor = 1; } if (! empty(($_POST['multiplier'])) && is_numeric($_POST['multiplier'])) { $multiplier = $_POST['multiplier']; } else { $multiplier = 1; } if (! empty(($_POST['user_func']))) { $user_func = $_POST['user_func']; } else { $user_func = ['NULL']; } if ($action == 'test') { $query = 'SELECT * FROM `devices` WHERE `device_id` = ? LIMIT 1'; $device = dbFetchRow($query, [$device_id]); $rawdata = snmp_get($device, $oid, '-Oqv'); if (is_numeric($rawdata)) { if (dbUpdate( [ 'customoid_passed' => 1, ], 'customoids', 'customoid_id=?', [$id] ) >= 0) { $message = "Test successful for $name, value $rawdata received"; } else { $status = 'error'; $message = "Failed to set pass on OID $name"; } } else { $status = 'error'; $message = "Invalid data in SNMP reply, value $rawdata received"; } } else { if (is_numeric($id) && $id > 0) { if (dbUpdate( [ 'customoid_descr' => $name, 'customoid_oid' => $oid, 'customoid_datatype' => $datatype, 'customoid_unit' => $unit, 'customoid_divisor' => $divisor, 'customoid_multiplier' => $multiplier, 'customoid_limit' => $limit, 'customoid_limit_warn' => $limit_warn, 'customoid_limit_low' => $limit_low, 'customoid_limit_low_warn' => $limit_low_warn, 'customoid_alert' => $alerts, 'customoid_passed' => $passed, 'user_func' => $user_func, ], 'customoids', '`customoid_id` = ?', [$id] ) >= 0) { //end if condition $message = "Edited OID: $name"; } else { $status = 'error'; $message = "Failed to edit OID $name"; } } else { if (empty($name)) { $status = 'error'; $message = 'No OID name provided'; } else { if (dbFetchCell('SELECT 1 FROM `customoids` WHERE `customoid_descr` = ? AND `device_id`=?', [$name, $device_id])) { $status = 'error'; $message = "OID named $name on this device already exists"; } else { $id = dbInsert( [ 'device_id' => $device_id, 'customoid_descr' => $name, 'customoid_oid' => $oid, 'customoid_datatype' => $datatype, 'customoid_unit' => $unit, 'customoid_divisor' => $divisor, 'customoid_multiplier' => $multiplier, 'customoid_limit' => $limit, 'customoid_limit_warn' => $limit_warn, 'customoid_limit_low' => $limit_low, 'customoid_limit_low_warn' => $limit_low_warn, 'customoid_alert' => $alerts, 'customoid_passed' => $passed, 'user_func' => $user_func, ], 'customoids' ); if ($id) { $message = "Added OID: $name"; } else { $status = 'error'; $message = "Failed to add OID: $name"; } } } } } exit(json_encode([ 'status' => $status, 'message' => $message, ]));