예제 #1
0
int
read_record(FILE *fp, struct log_entry *entry)
{
	char buffer[REFERER_MAXLEN];
	int ret;
	int seconds;
	ret = fscanf(fp, 
		"%d.%d | %d | "
		"%" TO_STR(IP_MAXLEN) "s | "
		"%" TO_STR(HEAD_ST_MAXLEN) "s | "
		"%d | "
		"%" TO_STR(METHOD_MAXLEN) "s | "
		"%" TO_STR(URI_MAXLEN) "s | "
		"%" TO_STR(USERNAME_MAXLEN) "s | "
		"%" TO_STR(HSTATUS_MAXLEN) "s | "
		"%" TO_STR(MIMETYPE_MAXLEN) "s | "
		"%d | ",
            	&entry->time, &seconds, &entry->elaps,
		entry->ipaddr,
		entry->head_st,
		&entry->len,
		entry->method,
		entry->uri,
		entry->username,
		entry->h_status,
		entry->mime_type,
		&entry->port);
	if (get_user_agent(fp, buffer, USERAGENT_MAXLEN, entry->user_agent) == -1 || get_referer(fp, buffer, REFERER_MAXLEN, entry->referer) == -1)
		return -1;
	if (ret < 2)
		return 1;

	return 0;
}
예제 #2
0
static const char *get_login_referer(void)
{
	const char *referer = get_referer();
	const char *ref;
	if (!strcmp(referer, "/") || !strcmp(referer, "/index.htm"))
		ref = "sec";
	else
		ref = referer;
	return ref;
}
예제 #3
0
        void write_referer(CRegKey& _key_product)
        {
            CAtlString referer = get_referer();

            _key_product.SetStringValue(L"referer", referer);

            ULONG len = 1024;
            wchar_t buffer[1025];
            if (_key_product.QueryStringValue(L"referer_first", buffer, &len) != ERROR_SUCCESS)
                _key_product.SetStringValue(L"referer_first", referer);
        }