Beispiel #1
0
function service_list($conn, $page, $search)
{
    $return['error'] = TRUE;
    $return['msg'] = '';
    $filters = array();
    $filters['limit'] = get_query_limits($page);
    $filters['order_by'] = 'port';
    if ($search != '') {
        $search = utf8_decode($search);
        $search = escape_sql($search, $conn);
        $filters['where'] = " (s.port LIKE '%{$search}%'  OR s.service LIKE '%{$search}%'";
        //Filter by protocol name
        $protocol_list = Protocol::get_list($search);
        $protocol_list = array_keys($protocol_list);
        $protocol_list = implode(',', $protocol_list);
        if (!empty($protocol_list)) {
            $filters['where'] .= " OR s.protocol IN ({$protocol_list})";
        }
        $filters['where'] .= ")";
    }
    try {
        list($services, $total) = Asset_host_services::get_services_available($conn, $filters, TRUE);
    } catch (Exception $e) {
        $return['error'] = TRUE;
        $return['msg'] = $e->getMessage();
        return $return;
    }
    if ($total > 0) {
        $selected = get_selected_values(10);
    }
    $list = array();
    //Going through the list to format the elements properly:
    foreach ($services as $service) {
        $_serv = array();
        $id = $service['port'] . ';' . $service['protocol'] . ';' . $service['service'];
        $md5 = md5($id);
        $name = $service['port'] . '/' . $service['prot_name'] . ' (' . $service['service'] . ')';
        $_chk = $selected[$md5] != '' ? TRUE : FALSE;
        $_serv = array('id' => $id, 'name' => Util::utf8_encode2($name), 'checked' => $_chk);
        $list[$md5] = $_serv;
    }
    $data['total'] = intval($total);
    $data['list'] = $list;
    $return['error'] = FALSE;
    $return['data'] = $data;
    return $return;
}