⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rredir.c

📁 -
💻 C
字号:
/* $Id: rredir.c,v 1.3 1996/09/14 16:54:47 wessels Exp $ *//* * From:    richard@hekkihek.hacom.nl (Richard Huveneers) * To:      squid-users@nlanr.net * Subject: Save 15% on your bandwidth... * Date:    12 Sep 1996 21:21:55 GMT * =========================================================================== *  * I have downloaded the multi-megabyte files from Netscape and Microsoft * that our users like to download from every mirror in the world, * defeating the usual caching. *  * I put these files in a separate directory and installed a basic * redirector for Squid that checks if the file (so hostname and pathname * are disregarded) is present in this directory. *  * After a few days of testing (the redirector looks very stable) it looks * like this is saving us approx. 15% on our cache flow. Also, our own WWW * server has become more popular than ever :) *  * I'm sure this code will be useful to others too, so I've attached it at * the end of this message. Improvements, extensions etc. are welcome. *  * I'm going on holidays now, so I won't be able to respond to e-mail * quickly. *  * Enjoy, Richard. *//* * rredir - redirect to local directory *  * version 0.1, 7 sep 1996 * - initial version (Richard Huveneers <Richard.Huveneers@hekkihek.hacom.nl>) */#include <stdio.h>#include <unistd.h>#include <string.h>#include <ctype.h>#define ACCESS_LOCAL_DIR        "/var/lib/httpd/htdocs/local/rredir"#define REDIRECT_TO_URL         "http://www.hacom.nl/local/rredir"#define BUFFER_SIZE             (16*1024)intmain(){    char buf[BUFFER_SIZE];    char *s, *t;    int tlu = 0;    /* make standard output line buffered */    if (setvbuf(stdout, NULL, _IOLBF, 0) != 0)	return 1;    /* speed up the access() calls below */    if (chdir(ACCESS_LOCAL_DIR) == -1)	return 1;    /* scan standard input */    while (fgets(buf, BUFFER_SIZE, stdin) != NULL) {	/* check for too long urls */	if (strchr(buf, '\n') == NULL) {	    tlu = 1;	    continue;	}	if (tlu)	    goto dont_redirect;	/* determine end of url */	if ((s = strchr(buf, ' ')) == NULL)	    goto dont_redirect;	*s = '\0';	/* determine first character of filename */	if ((s = strrchr(buf, '/')) == NULL)	    goto dont_redirect;	s++;	/* security: do not redirect to hidden files, the current	 * ** directory or the parent directory */	if (*s == '.' || *s == '\0')	    goto dont_redirect;	/* map filename to lower case */	for (t = s; *t != '\0'; t++)	    *t = (char) tolower((int) *t);	/* check for a local copy of this file */	if (access(s, R_OK) == 0) {	    (void) printf("%s/%s\n", REDIRECT_TO_URL, s);	    continue;	}      dont_redirect:	tlu = 0;	(void) printf("\n");    }    return 0;}

⌨️ 快捷键说明

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