diff --git a/pandora_console/operation/search_agents.getdata.php b/pandora_console/operation/search_agents.getdata.php index 1ed2e1875e..02f8d75a97 100644 --- a/pandora_console/operation/search_agents.getdata.php +++ b/pandora_console/operation/search_agents.getdata.php @@ -70,18 +70,19 @@ if ($searchAgents) { $has_secondary = enterprise_hook('agents_is_using_secondary_groups'); + $stringSearchSQL = str_replace('&', '&', $stringSearchSQL); $sql = "SELECT DISTINCT taddress_agent.id_agent FROM taddress INNER JOIN taddress_agent ON taddress.id_a = taddress_agent.id_a - WHERE taddress.ip LIKE '%$stringSearchSQL%'"; + WHERE taddress.ip LIKE '$stringSearchSQL'"; $id = db_get_all_rows_sql($sql); if ($id != '') { $aux = $id[0]['id_agent']; - $search_sql = " t1.nombre LIKE '%%".$stringSearchSQL."%%' OR - t2.nombre LIKE '%%".$stringSearchSQL."%%' OR - t1.alias LIKE '%%".$stringSearchSQL."%%' OR - t1.comentarios LIKE '%%".$stringSearchSQL."%%' OR + $search_sql = " t1.nombre LIKE '".$stringSearchSQL."' OR + t2.nombre LIKE '".$stringSearchSQL."' OR + t1.alias LIKE '".$stringSearchSQL."' OR + t1.comentarios LIKE '".$stringSearchSQL."' OR t1.id_agente =".$aux; $idCount = count($id); @@ -93,16 +94,16 @@ if ($searchAgents) { } } } else { - $search_sql = " t1.nombre LIKE '%%".$stringSearchSQL."%%' OR - t2.nombre LIKE '%%".$stringSearchSQL."%%' OR - t1.direccion LIKE '%%".$stringSearchSQL."%%' OR - t1.comentarios LIKE '%%".$stringSearchSQL."%%' OR - t1.alias LIKE '%%".$stringSearchSQL."%%'"; + $search_sql = " t1.nombre LIKE '".$stringSearchSQL."' OR + t2.nombre LIKE '".$stringSearchSQL."' OR + t1.direccion LIKE '".$stringSearchSQL."' OR + t1.comentarios LIKE '".$stringSearchSQL."' OR + t1.alias LIKE '".$stringSearchSQL."'"; } if ($has_secondary === true) { $search_sql .= " OR (tasg.id_group IS NOT NULL AND - tasg.id_group IN (SELECT id_grupo FROM tgrupo WHERE nombre LIKE '%%".$stringSearchSQL."%%'))"; + tasg.id_group IN (SELECT id_grupo FROM tgrupo WHERE nombre LIKE '".$stringSearchSQL."'))"; } $sql = " @@ -164,7 +165,6 @@ if ($searchAgents) { $totalAgents = db_get_value_sql( 'SELECT COUNT(DISTINCT id_agente) AS agent_count '.$sql ); - $_SESSION['totalAgents'] = $totalAgents; } foreach ($agents as $key => $agent) { diff --git a/pandora_console/operation/search_agents.php b/pandora_console/operation/search_agents.php index 5624a34c2c..06af5c822d 100755 --- a/pandora_console/operation/search_agents.php +++ b/pandora_console/operation/search_agents.php @@ -44,7 +44,9 @@ try { ]; $tableId = 'agents_search'; + $stringSearchSQL = $_SESSION['stringSearchSQL']; + unset($_SESSION['stringSearchSQL']); // Load datatables user interface. ui_print_datatable( [ diff --git a/pandora_console/operation/search_main.php b/pandora_console/operation/search_main.php index cd56b3bfbe..0f0285e454 100644 --- a/pandora_console/operation/search_main.php +++ b/pandora_console/operation/search_main.php @@ -48,12 +48,83 @@ $table->style[13] = 'font-weight: bold; text-align: left;'; $table->style[14] = 'font-weight: bold; text-align: left;'; $table->style[15] = 'font-weight: bold; text-align: left;'; +// Get total agents. +$userGroups = users_get_groups($config['id_user'], 'AR', false); +$id_userGroups = array_keys($userGroups); +$has_secondary = enterprise_hook('agents_is_using_secondary_groups'); +$stringSearchSQL = str_replace('&', '&', $stringSearchSQL); +$sql = "SELECT DISTINCT taddress_agent.id_agent FROM taddress + INNER JOIN taddress_agent ON + taddress.id_a = taddress_agent.id_a + WHERE taddress.ip LIKE '$stringSearchSQL'"; + + $id = db_get_all_rows_sql($sql); +if ($id != '') { + $aux = $id[0]['id_agent']; + $search_sql = " t1.nombre LIKE '".$stringSearchSQL."' OR + t2.nombre LIKE '".$stringSearchSQL."' OR + t1.alias LIKE '".$stringSearchSQL."' OR + t1.comentarios LIKE '".$stringSearchSQL."' OR + t1.id_agente =".$aux; + + $idCount = count($id); + + if ($idCount >= 2) { + for ($i = 1; $i < $idCount; $i++) { + $aux = $id[$i]['id_agent']; + $search_sql .= " OR t1.id_agente = $aux"; + } + } +} else { + $search_sql = " t1.nombre LIKE '".$stringSearchSQL."' OR + t2.nombre LIKE '".$stringSearchSQL."' OR + t1.direccion LIKE '".$stringSearchSQL."' OR + t1.comentarios LIKE '".$stringSearchSQL."' OR + t1.alias LIKE '".$stringSearchSQL."'"; +} + +if ($has_secondary === true) { + $search_sql .= " OR (tasg.id_group IS NOT NULL AND + tasg.id_group IN (SELECT id_grupo FROM tgrupo WHERE nombre LIKE '".$stringSearchSQL."'))"; +} + +$sql = " + FROM tagente t1 LEFT JOIN tagent_secondary_group tasg + ON t1.id_agente = tasg.id_agent + INNER JOIN tgrupo t2 + ON t2.id_grupo = t1.id_grupo + WHERE ( + 1 = ( + SELECT is_admin + FROM tusuario + WHERE id_user = '".$config['id_user']."' + ) + OR ( + t1.id_grupo IN (".implode(',', $id_userGroups).') + OR tasg.id_group IN ('.implode(',', $id_userGroups).") + ) + OR 0 IN ( + SELECT id_grupo + FROM tusuario_perfil + WHERE id_usuario = '".$config['id_user']."' + AND id_perfil IN ( + SELECT id_perfil + FROM tperfil WHERE agent_view = 1 + ) + ) + ) + AND ( + ".$search_sql.' + ) +'; +$totalAgents = db_get_value_sql( + 'SELECT COUNT(DISTINCT id_agente) AS agent_count '.$sql +); $table->data[0][0] = html_print_image('images/agent.png', true, ['title' => __('Agents found'), 'class' => 'invert_filter']); -$table->data[0][1] = "".sprintf(__('%s Found'), $_SESSION['totalAgents']).''; -unset($_SESSION['totalAgents']); +$table->data[0][1] = "".sprintf(__('%s Found'), $totalAgents).''; $table->data[0][2] = html_print_image('images/module.png', true, ['title' => __('Modules found'), 'class' => 'invert_filter']); $table->data[0][3] = "".sprintf(__('%s Found'), $totalModules).''; diff --git a/pandora_console/operation/search_results.php b/pandora_console/operation/search_results.php index 6ef3a55d15..fa5472ebd9 100644 --- a/pandora_console/operation/search_results.php +++ b/pandora_console/operation/search_results.php @@ -36,6 +36,7 @@ foreach ($arrayKeywords as $keyword) { $stringSearchSQL = implode(' ', $temp); $stringSearchSQL = str_replace('_', '\_', $stringSearchSQL); +$_SESSION['stringSearchSQL'] = $stringSearchSQL; if ($config['search_category'] == 'all') { $searchTab = 'main'; } else {