function import_assets_csv($filename) { require_once 'classes/Util.inc'; $response = array(); $db = new ossim_db(); $conn = $db->connect(); if (($content = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)) == false) { $response['file_errors'] = "Failed to read file"; $response['status'] = false; return $response; } else { foreach ($content as $k => $v) { $data[] = explode(";", $v); } } $cont = 0; ini_set('max_execution_time', 180); ids_valid($data); if (count($data) <= 0) { $response['file_errors'] = _("Incompatible file format"); $response['status'] = false; return $response; } $allowed_sensors = Session::allowedSensors(); if (!empty($allowed_sensors)) { $my_allowed_sensors = explode(',', $allowed_sensors); } else { $response['file_errors'] = _("You need at least one sensor assigned"); $response['status'] = false; return $response; } foreach ($data as $k => $v) { $response['status'] = true; $response['read_line'] = $cont; $cont++; if (count($v) != 8) { $response['line_errors'][$cont][] = array("Line", _("Format not allowed")); $response['status'] = false; } $param = array(); foreach ($v as $i => $field) { $parameter = trim($field); $pattern = '/^\\"|\\"$|^\'|\'$/'; $param[] = preg_replace($pattern, '', $parameter); } //IP if (!ossim_valid($param[0], OSS_IP_ADDR, 'illegal:' . _("IP"))) { $response['line_errors'][$cont][] = array("IP", ossim_get_error_clean()); $response['status'] = false; } //Hostname if (empty($param[1])) { $param[1] = $param[0]; } else { if (!ossim_valid($param[1], OSS_SCORE, OSS_ALPHA, OSS_PUNC, 'illegal:' . _("Hostname"))) { $response['line_errors'][$cont][] = array("Hostname", ossim_get_error_clean()); $response['status'] = false; ossim_clean_error(); } } //FQDNs if (!empty($param[2])) { $fqdns_list = explode(",", $param[2]); foreach ($fqdns_list as $k => $fqdn) { if (!ossim_valid(trim($fqdn), OSS_NULLABLE, OSS_ALPHA, OSS_PUNC, 'illegal:' . _("FQDN/Aliases"))) { $response['line_errors'][$cont][] = array("FQDN/Aliases", ossim_get_error_clean()); $response['status'] = false; ossim_clean_error(); } } } //Description if (!ossim_valid($param[3], OSS_NULLABLE, OSS_SCORE, OSS_ALPHA, OSS_PUNC, OSS_AT, 'illegal:' . _("Description"))) { $response['line_errors'][$cont][] = array("Description", ossim_get_error_clean()); $response['status'] = false; ossim_clean_error(); } //Asset if ($param[4] == '') { $param[4] = 2; } else { if (!ossim_valid($param[4], OSS_NULLABLE, OSS_DIGIT, 'illegal:' . _("Asset value"))) { $response['line_errors'][$cont][] = array("Asset", ossim_get_error_clean()); $response['status'] = false; ossim_clean_error(); } } //NAT if (!ossim_valid($param[5], OSS_NULLABLE, OSS_IP_ADDR, 'illegal:' . _("NAT"))) { $response['line_errors'][$cont][] = array("NAT", ossim_get_error_clean()); $response['status'] = false; ossim_clean_error(); } //Sensors $sensors = array(); if (!empty($param[6])) { $sensor_name = array(); $list = explode(",", $param[6]); $sensors_list = array_intersect($list, $my_allowed_sensors); if (!empty($sensors_list)) { foreach ($sensors_list as $sensor) { $sensors[] = Sensor::get_sensor_name($conn, $sensor); } } else { $response['line_errors'][$cont][] = array("Sensors", _("You need at least one allowed Sensor")); $response['status'] = false; ossim_clean_error(); } } else { $response['line_errors'][$cont][] = array("Sensors", _("Column Sensors is empty")); $response['status'] = false; ossim_clean_error(); } $list_os = array("Windows", "Linux", "FreeBSD", "NetBSD", "OpenBSD", "MacOS", "Solaris", "Cisco", "AIX", "HP-UX", "Tru64", "IRIX", "BSD/OS", "SunOS", "Plan9", "IPhone"); //Operating System if (!empty($param[7]) && !in_array($param[7], $list_os)) { $param[7] = "Unknown"; } if ($response['status'] == true) { //Parameters $ip = $param[0]; $hostname = $param[1]; $asset = $param[4]; $threshold_c = 30; $threshold_a = 30; $rrd_profile = ""; $alert = 0; $persistence = 0; $nat = $param[5]; $descr = $param[3]; $os = $param[7]; $fqdns = $param[2]; $latitude = ''; $longitude = ''; $icon = 0; if (!Host::in_host($conn, $ip)) { Host::insert($conn, $ip, $hostname, $asset, $threshold_c, $threshold_a, $rrd_profile, $alert, $persistence, $nat, $sensors, $descr, $os, $mac, $mac_vendor, $latitude, $longitude, $fqdns, $icon); } else { Host::update($conn, $ip, $hostname, $asset, $threshold_c, $threshold_a, $rrd_profile, $alert, $persistence, $nat, $sensors, $descr, $os, $mac, $mac_vendor, $latitude, $longitude, $fqdns, $icon); } } } $response['read_line'] = $cont; return $response; }
if ($destination_type == 'host') { if (Session::hostAllowed($dbconn, $destination)) { $tdestinations[] = $destination; } } elseif ($destination_type == 'net') { if (Session::netAllowed($dbconn, $destination)) { $tdestinations[] = $destination; } } } } } else { $tdestinations = array(); } // launch scan $info_sensor = $sensors_status[Sensor::get_sensor_name($dbconn, $sensor_ip)]; if ($sensor_ip != "" && $sensor_interface != "" && intval($timeout) > 0 && count($info_error) == 0 && ($info_sensor[0] == 0 || $info_sensor[0] == -1)) { $rlaunch_scan = $scan->launch_scan($tsources, $tdestinations, $sensor_ip, $sensor_interface, $timeout); $message_info = "<div class='ossim_success'>" . _("Launched scan") . "</div>"; } else { if ($info_sensor[0] != -1 && ($info_sensor[0] == 1 || $info_sensor[0] == 2)) { $message_info = "<div class='ossim_alert'>" . _("The sensor is busy") . "</div>"; } } } // delete scan if ($op == "delete" && $scan_name != "" && $sensor_name != "") { $scan_info = explode("_", $scan_name); $users = Session::get_users_to_assign($dbconn); $my_users = array(); foreach ($users as $k => $v) {