📄 program-proxyverify-for-freebsd.html
字号:
<!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>标 题: [技术]FreeProxyVerify for FreeBSD
<br>发信站: BBS 水木清华站 (Tue Jul 7 16:07:47 1998)
<br>
<br>标 题: [技术]FreeProxyVerify for FreeBSD
<br>发信站: 华南网木棉站 (Thu Jul 2 11:21:23 1998), 转信
<br>
<br>/* Free Proxy 验证程序 ,for UNIX
*/
<br>/* Author: Happy(Netguy)
*/
<br>/*
*/
<br>/* 1998.07.02 calvin注:
*/
<br>/* <a href="program-proxyverify-for-solaris.html">原来版本在Solaris上</a>,我将它改到FreeBSD上来.
:) */
<br>/*
*/
<br>
<br>//#define DEBUG
<br>
<br>#include <stdio.h>
<br>#include <string.h>
<br>#include <netinet/in.h>
<br>#include <sys/types.h>
<br>#include <sys/socket.h>
<br>#include <sys/signal.h>
<br>#include <sys/time.h>
<br>#include <fcntl.h>
<br>#include <unistd.h>
<br>#include <sys/ioctl.h>
<br>
<br>#define ZERO (struct fd_set *)0
<br>#define BUFLEN 256
<br>
<br>#ifdef DEBUG
<br> int tmp;
<br>#endif
<br>
<br>char
target[]="GET http://www.digital.com/index.html\n";/*HTTP命令*/
<br>char
result[80]; /* 存放过滤结果的文件的名字
*/
<br>char
buf[BUFLEN]; /* 缓冲区
*/
<br>FILE
*f,*out; /* 输入文件和输出文件
*/
<br>int
port;
/* server的端口号
*/
<br>int
status=-1; /* read,write,select的返回值*/
<br>char
serverName[30]; /* server的IP字符串
*/
<br>u_char p1,p2,p3,p4;
/* IP地址的四个部分 */
<br>int
sockfd=-1; /* socket描述符
*/
<br>struct timeval timeout={2,0}; /* 超时限制
*/
<br>struct fd_set rmask,wmask;
/* socket的读写屏蔽 */
<br>struct sockaddr_in
host;
<br>u_long serverAddr;
/* server的IP地址
*/
<br>int
counter; /* 输入文件的行数
*/
<br>int
i;
/* 文件描述符
*/
<br>
<br>
<br>void killHandle(void)
/* 处理SIGTERM信号 */
<br>{
<br> fprintf(out,"killed at %s\t%d\n",serverName,port);
<br> exit(0);
<br>}
<br>
<br>#ifdef DEBUG
<br> void sigpipeHandle(void)
<br> { fprintf(out,"SIGPIPE at %s\t%d\n",serverName,port);
<br> }
<br>#endif
<br>
<br>
<br>main(int argc,char **argv)
<br>{
<br>
<br> if(argc!=3) { printf("Usage: %s dataFileName
<br>number\n",argv[0]);exit(-1); }
<br>
<br> f=fopen(argv[1],"rb"); /*
作为输入的数据文件 */
<br> if(! f) { fprintf(stdout,"open file error\n"); exit(-1); }
<br>
<br> strcpy(result,argv[1]);
<br> strcat(result,".ok");
<br> out=fopen(result,"a"); /*
存放结果的输出文件 */
<br> if(! out) { fprintf(stdout,"open file error\n"); exit(-1); }
<br>
<br> counter=atoi(argv[2]);
/* 输入文件的行数 */
<br> fprintf(stdout,"Free proxy filter...\n");
<br> fprintf(stdout,"\tInput file:\t%s\n",argv[1]);
<br> fprintf(stdout,"\tTotal :\t%s\n",argv[2]);
<br> fprintf(stdout,"written by Netguy(造梦人)\n");
<br>
<br> signal(SIGTERM,killHandle);
<br>
<br>#ifdef DEBUG
/* 处理SIGPIPE信号 */
<br> signal(SIGPIPE,sigpipeHandle);
<br>#else
<br> signal(SIGPIPE,SIG_IGN);
<br>#endif
<br>
<br> switch(fork( ))
<br> { case 0:
/* 子进程继续 */
<br> break;
<br> case -1:
/* 出错 */
<br> perror("fork( )");
<br> exit(-1);
<br> default:
<br> fclose(out);
/* 父进程退出 */
<br> fclose(f);
<br> exit(0);
<br> }
<br>
<br> setpgrp(0, getpgrp()); /* 脱离终端组和进程组,成为后台进程
*/
<br>
/* calvin修改... 19980702 */
<br> i=open("/dev/tty",O_RDWR);
<br> if(i>=0)
<br> { ioctl(i,TIOCNOTTY,0);
<br> close(i);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -