useragent.c

来自「-」· C语言 代码 · 共 128 行

C
128
字号
/* * $Id: useragent.c,v 1.16 1999/01/29 18:31:18 wessels Exp $ * * DEBUG: section 40    User-Agent logging * AUTHOR: Joe Ramey <ramey@csc.ti.com> * * SQUID Internet Object Cache  http://squid.nlanr.net/Squid/ * ---------------------------------------------------------- * *  Squid is the result of efforts by numerous individuals from the *  Internet community.  Development is led by Duane Wessels of the *  National Laboratory for Applied Network Research and funded by the *  National Science Foundation.  Squid is Copyrighted (C) 1998 by *  Duane Wessels and the University of California San Diego.  Please *  see the COPYRIGHT file for full details.  Squid incorporates *  software developed and/or copyrighted by other sources.  Please see *  the CREDITS file for full details. * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. *   *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. *   *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. * */#include "squid.h"voiduseragentOpenLog(void){#if USE_USERAGENT_LOG    char *fname = NULL;    int log_fd = -1;    fname = Config.Log.useragent;    /* Close and reopen the log.  It may have been renamed "manually"     * before HUP'ing us. */    if (cache_useragent_log) {	file_close(fileno(cache_useragent_log));	fclose(cache_useragent_log);	cache_useragent_log = NULL;    }    if (fname && strcmp(fname, "none") != 0) {	log_fd = file_open(fname, O_WRONLY | O_CREAT | O_APPEND, NULL, NULL, NULL);	if (log_fd < 0) {	    debug(50, 0) ("useragentOpenLog: %s: %s\n", fname, xstrerror());	} else if ((cache_useragent_log = fdopen(log_fd, "a")) == NULL) {	    file_close(log_fd);	    debug(50, 0) ("useragentOpenLog: %s: %s\n", fname, xstrerror());	}    }    if (log_fd < 0 || cache_useragent_log == NULL)	debug(40, 1) ("User-Agent logging is disabled.\n");#endif}voiduseragentRotateLog(void){#if USE_USERAGENT_LOG    char *fname = NULL;    int i;    LOCAL_ARRAY(char, from, MAXPATHLEN);    LOCAL_ARRAY(char, to, MAXPATHLEN);    struct stat sb;    if ((fname = Config.Log.useragent) == NULL)	return;    if (strcmp(fname, "none") == 0)	return;#ifdef S_ISREG    if (stat(fname, &sb) == 0)	if (S_ISREG(sb.st_mode) == 0)	    return;#endif    debug(40, 1) ("useragentRotateLog: Rotating.\n");    /* Rotate numbers 0 through N up one */    for (i = Config.Log.rotateNumber; i > 1;) {	i--;	snprintf(from, MAXPATHLEN, "%s.%d", fname, i - 1);	snprintf(to, MAXPATHLEN, "%s.%d", fname, i);	rename(from, to);    }    if (cache_useragent_log) {	file_close(fileno(cache_useragent_log));	fclose(cache_useragent_log);	cache_useragent_log = NULL;    }    /* Rotate the current log to .0 */    if (Config.Log.rotateNumber > 0) {	snprintf(to, MAXPATHLEN, "%s.%d", fname, 0);	rename(fname, to);    }    useragentOpenLog();#endif}voidlogUserAgent(const char *client, const char *agent){#if USE_USERAGENT_LOG    static time_t last_time = 0;    static char time_str[128];    const char *s;    if (!cache_useragent_log)	return;    if (squid_curtime != last_time) {	s = mkhttpdlogtime(&squid_curtime);	strcpy(time_str, s);	last_time = squid_curtime;    }    fprintf(cache_useragent_log, "%s [%s] \"%s\"\n",	client,	time_str,	agent);    if (!Config.onoff.buffered_logs)	fflush(cache_useragent_log);#endif}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?