Example #1
0
void HttpManager::Event( ALLEGRO_EVENT* e )
{
	std::string eventUrl;
	if( e->type == ALLEGRO_EVENT_HTTP )
	{
		eventUrl.clear();
		eventUrl.append( (char*)e->user.data1 );
		for( int i = 0; i < urlDownloading.size(); i++ )
		{
			if( *urlDownloading.at(i) == eventUrl )
			{
				urlDownloading.erase( urlDownloading.begin() + i );
				break;
			}
		}
#ifdef WRITE_LOG
		printf( "DownloadManager: Queue Length: %d; Download Count: %d\n", urlList.size(), urlDownloading.size() );
#endif
	}

	while( urlDownloading.size() < urlDownloads && urlList.size() > 0 )
	{
		urlDownloading.push_back( urlList.front() );
		get_http_page( (char*)urlList.front()->c_str() );
		urlList.pop_front();
#ifdef WRITE_LOG
		printf( "DownloadManager: Queue Length: %d; Download Count: %d\n", urlList.size(), urlDownloading.size() );
#endif
	}

}
Example #2
0
int	WEB_PAGE_GET(const char *cmd, const char *param, unsigned flags, AGENT_RESULT *result)
{
    char	hostname[MAX_STRING_LEN];
    char	path[MAX_STRING_LEN];
    char	port_str[8];
    char	buffer[MAX_BUFFER_LEN];

    if (num_param(param) > 3)
        return SYSINFO_RET_FAIL;

    if (0 != get_param(param, 1, hostname, sizeof(hostname)))
        return SYSINFO_RET_FAIL;

    if (0 != get_param(param, 2, path, sizeof(path)))
        *path = '\0';

    if (0 != get_param(param, 3, port_str, sizeof(port_str)) || '\0' == *port_str)
        zbx_snprintf(port_str, sizeof(port_str), "%d", ZBX_DEFAULT_HTTP_PORT);
    else if (FAIL == is_uint(port_str))
        return SYSINFO_RET_FAIL;

    if (SYSINFO_RET_OK == get_http_page(hostname, path, (unsigned short)atoi(port_str), buffer, sizeof(buffer)))
    {
        zbx_rtrim(buffer, "\r\n");
        SET_TEXT_RESULT(result, strdup(buffer));
    }
    else
        SET_TEXT_RESULT(result, strdup("EOF"));

    return SYSINFO_RET_OK;
}
Example #3
0
int	WEB_PAGE_PERF(const char *cmd, const char *param, unsigned flags, AGENT_RESULT *result)
{
    char	hostname[MAX_STRING_LEN];
    char	path[MAX_STRING_LEN];
    char	port_str[8];
    double	start_time;

    if (num_param(param) > 3)
        return SYSINFO_RET_FAIL;

    if (0 != get_param(param, 1, hostname, sizeof(hostname)))
        return SYSINFO_RET_FAIL;

    if (0 != get_param(param, 2, path, sizeof(path)))
        *path = '\0';

    if (0 != get_param(param, 3, port_str, sizeof(port_str)) || '\0' == *port_str)
        zbx_snprintf(port_str, sizeof(port_str), "%d", ZBX_DEFAULT_HTTP_PORT);
    else if (FAIL == is_uint(port_str))
        return SYSINFO_RET_FAIL;

    start_time = zbx_time();

    if (SYSINFO_RET_OK == get_http_page(hostname, path, (unsigned short)atoi(port_str), NULL, 0))
    {
        SET_DBL_RESULT(result, zbx_time() - start_time);
    }
    else
        SET_DBL_RESULT(result, 0.0);

    return SYSINFO_RET_OK;
}
Example #4
0
int	WEB_PAGE_REGEXP(const char *cmd, const char *param, unsigned flags, AGENT_RESULT *result)
{
    char	hostname[MAX_STRING_LEN];
    char	path[MAX_STRING_LEN];
    char	port_str[8];
    char	regexp[MAX_STRING_LEN];
    char	len_str[16];
    char	back[MAX_BUFFER_LEN];
    char	*buffer = NULL, *found;
    int	len, found_len;

    if (num_param(param) > 5)
        return SYSINFO_RET_FAIL;

    if (0 != get_param(param, 1, hostname, sizeof(hostname)))
        return SYSINFO_RET_FAIL;

    if (0 != get_param(param, 2, path, sizeof(path)))
        *path = '\0';

    if (0 != get_param(param, 3, port_str, sizeof(port_str)) || '\0' == *port_str)
        zbx_snprintf(port_str, sizeof(port_str), "%d", ZBX_DEFAULT_HTTP_PORT);
    else if (FAIL == is_uint(port_str))
        return SYSINFO_RET_FAIL;

    if (0 != get_param(param, 4, regexp, sizeof(regexp)))
        return SYSINFO_RET_FAIL;

    if (0 != get_param(param, 5, len_str, sizeof(len_str)) || '\0' == *len_str)
        zbx_snprintf(len_str, sizeof(len_str), "%d", MAX_BUFFER_LEN - 1);
    else if (FAIL == is_uint(len_str))
        return SYSINFO_RET_FAIL;

    buffer = zbx_malloc(buffer, ZBX_MAX_WEBPAGE_SIZE);

    if (SYSINFO_RET_OK == get_http_page(hostname, path, (unsigned short)atoi(port_str), buffer, ZBX_MAX_WEBPAGE_SIZE))
    {
        if (NULL != (found = zbx_regexp_match(buffer, regexp, &found_len)))
        {
            len = atoi(len_str) + 1;
            len = MIN(len, found_len + 1);
            len = MIN(len, sizeof(back));

            zbx_strlcpy(back, found, len);
            SET_STR_RESULT(result, strdup(back));
        }
        else
            SET_STR_RESULT(result, strdup("EOF"));
    }
    else
        SET_STR_RESULT(result, strdup("EOF"));

    zbx_free(buffer);

    return SYSINFO_RET_OK;
}