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

📄 program-proxyverify-for-freebsd.html

📁 学习linux的工具书
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
   <meta name="Author" content="Edward Fu">
   <meta name="GENERATOR" content="Mozilla/4.05 [zh-CN] (X11; I; Linux 2.1.127 i686) [Netscape]">
   <title>FreeProxyVerify for FreeBSD</title>
</head>
<body>
发信人: Calvin (灵飞), 信区: Linux
<br>标&nbsp; 题: [技术]FreeProxyVerify for FreeBSD
<br>发信站: BBS 水木清华站 (Tue Jul&nbsp; 7 16:07:47 1998)
<br>&nbsp;
<br>标&nbsp; 题: [技术]FreeProxyVerify for FreeBSD
<br>发信站: 华南网木棉站 (Thu Jul&nbsp; 2 11:21:23 1998), 转信
<br>&nbsp;
<br>/* Free Proxy 验证程序 ,for UNIX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*/
<br>/* Author:&nbsp; Happy(Netguy)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*/
<br>/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*/
<br>/*&nbsp; 1998.07.02 calvin注:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*/
<br>/*&nbsp; <a href="program-proxyverify-for-solaris.html">原来版本在Solaris上</a>,我将它改到FreeBSD上来.
:)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */
<br>/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*/
<br>&nbsp;
<br>//#define&nbsp; DEBUG
<br>&nbsp;
<br>#include &lt;stdio.h>
<br>#include &lt;string.h>
<br>#include &lt;netinet/in.h>
<br>#include &lt;sys/types.h>
<br>#include &lt;sys/socket.h>
<br>#include &lt;sys/signal.h>
<br>#include &lt;sys/time.h>
<br>#include &lt;fcntl.h>
<br>#include &lt;unistd.h>
<br>#include &lt;sys/ioctl.h>
<br>&nbsp;
<br>#define ZERO&nbsp; (struct fd_set *)0
<br>#define BUFLEN&nbsp; 256
<br>&nbsp;
<br>#ifdef&nbsp; DEBUG
<br>&nbsp;&nbsp;&nbsp;&nbsp; int tmp;
<br>#endif
<br>&nbsp;
<br>char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
target[]="GET http://www.digital.com/index.html\n";/*HTTP命令*/
<br>char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
result[80];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* 存放过滤结果的文件的名字
*/
<br>char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
buf[BUFLEN];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* 缓冲区&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*/
<br>FILE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*f,*out;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* 输入文件和输出文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*/
<br>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
port;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* server的端口号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*/
<br>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
status=-1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* read,write,select的返回值*/
<br>char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
serverName[30];&nbsp;&nbsp; /* server的IP字符串&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*/
<br>u_char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p1,p2,p3,p4;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* IP地址的四个部分&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */
<br>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
sockfd=-1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* socket描述符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*/
<br>struct timeval&nbsp; timeout={2,0};&nbsp;&nbsp;&nbsp; /* 超时限制&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*/
<br>struct fd_set&nbsp;&nbsp; rmask,wmask;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* socket的读写屏蔽&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */
<br>struct&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sockaddr_in
host;
<br>u_long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; serverAddr;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* server的IP地址&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*/
<br>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
counter;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* 输入文件的行数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*/
<br>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* 文件描述符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*/
<br>&nbsp;
<br>&nbsp;
<br>void killHandle(void)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* 处理SIGTERM信号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */
<br>{
<br>&nbsp;&nbsp; fprintf(out,"killed at %s\t%d\n",serverName,port);
<br>&nbsp;&nbsp; exit(0);
<br>}
<br>&nbsp;
<br>#ifdef DEBUG
<br>&nbsp;&nbsp; void sigpipeHandle(void)
<br>&nbsp;&nbsp; { fprintf(out,"SIGPIPE at&nbsp; %s\t%d\n",serverName,port);
<br>&nbsp;&nbsp; }
<br>#endif
<br>&nbsp;
<br>&nbsp;
<br>main(int argc,char **argv)
<br>{
<br>&nbsp;
<br>&nbsp; if(argc!=3) { printf("Usage: %s&nbsp;&nbsp; dataFileName
<br>number\n",argv[0]);exit(-1); }
<br>&nbsp;
<br>&nbsp; f=fopen(argv[1],"rb");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*
作为输入的数据文件&nbsp; */
<br>&nbsp; if(! f) { fprintf(stdout,"open file error\n"); exit(-1); }
<br>&nbsp;
<br>&nbsp; strcpy(result,argv[1]);
<br>&nbsp; strcat(result,".ok");
<br>&nbsp; out=fopen(result,"a");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*
存放结果的输出文件 */
<br>&nbsp; if(! out) { fprintf(stdout,"open file error\n"); exit(-1); }
<br>&nbsp;
<br>&nbsp; counter=atoi(argv[2]);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* 输入文件的行数&nbsp; */
<br>&nbsp; fprintf(stdout,"Free proxy filter...\n");
<br>&nbsp; fprintf(stdout,"\tInput file:\t%s\n",argv[1]);
<br>&nbsp; fprintf(stdout,"\tTotal&nbsp;&nbsp;&nbsp; :\t%s\n",argv[2]);
<br>&nbsp; fprintf(stdout,"written by Netguy(造梦人)\n");
<br>&nbsp;
<br>&nbsp; signal(SIGTERM,killHandle);
<br>&nbsp;
<br>#ifdef DEBUG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* 处理SIGPIPE信号&nbsp;&nbsp; */
<br>&nbsp; signal(SIGPIPE,sigpipeHandle);
<br>#else
<br>&nbsp; signal(SIGPIPE,SIG_IGN);
<br>#endif
<br>&nbsp;
<br>&nbsp; switch(fork( ))
<br>&nbsp; { case 0:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* 子进程继续 */
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;
<br>&nbsp;&nbsp;&nbsp; case -1:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* 出错&nbsp;&nbsp; */
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; perror("fork( )");
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(-1);
<br>&nbsp;&nbsp;&nbsp; default:
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fclose(out);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* 父进程退出 */
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fclose(f);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(0);
<br>&nbsp; }
<br>&nbsp;
<br>&nbsp; setpgrp(0, getpgrp());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* 脱离终端组和进程组,成为后台进程
*/
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* calvin修改... 19980702 */
<br>&nbsp; i=open("/dev/tty",O_RDWR);
<br>&nbsp; if(i>=0)
<br>&nbsp; {&nbsp; ioctl(i,TIOCNOTTY,0);
<br>&nbsp;&nbsp;&nbsp;&nbsp; close(i);

⌨️ 快捷键说明

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