📄 00000008.htm
字号:
(*str)++; <BR> p = (*str); <BR> <BR> while (**str && !Isspace(**str)) <BR> (*str)++; <BR> <BR> if (**str) { <BR> **str = '\0'; <BR> (*str)++; <BR> } <BR> return p; <BR>} <BR> <BR>char * <BR>nextwordX(str) /* Leeward: 97.12.27: enable password include space(s) */ <BR>char **str; <BR>{ <BR> char *p; <BR> <BR> while (Isspace(**str)) <BR> (*str)++; <BR> p = (*str); <BR> <BR> while (**str && '\t' != **str && 10 != **str && 13 != **str) <BR> (*str)++; <BR> <BR> if (**str) { <BR> **str = '\0'; <BR> (*str)++; <BR> } <BR> return p; <BR>} <BR> <BR>void <BR>Init() <BR>{ <BR> State = S_CONNECT; <BR> LowUserid[0] = '\0'; <BR> markdel = 0; <BR> idletime = 0; <BR>} <BR> <BR>void <BR>Login_init() <BR>{ <BR> int fd, i; <BR> char *ptr; <BR> struct stat st; <BR> <BR> totalnum = totalbyte = 0; <BR> sprintf(genbuf, "mail/%c/%s/.DIR", toupper(*LowUserid), LowUserid); <BR> if (stat(genbuf, &st) == -1 || st.st_size == 0) { <BR> return; <BR> } <BR> totalnum = st.st_size / sizeof(struct fileheader); <BR> fcache = (struct fileheader *)malloc(st.st_size); <BR> postlen = (int *)malloc(sizeof(int) * totalnum); <BR> fd = open(genbuf, O_RDONLY); <BR> read(fd, fcache, st.st_size); <BR> close(fd); <BR> <BR> for (i = 0; i < totalnum; i++) { <BR> if (index(fcache[i].owner, '@') == NULL) { <BR> if (ptr = strchr(fcache[i].owner, ' ')) <BR> *ptr = '\0'; <BR> strcat(fcache[i].owner, BBSNAME); <BR> } <BR> sprintf(genbuf, "mail/%c/%s/%s", toupper(*LowUserid), LowUserid, fcache[i].filename); <BR> if (stat(genbuf, &st) == -1) <BR> st.st_size = 0; <BR> postlen[i] = st.st_size + strlen(fcache[i].owner) + 10 + strlen(fcache[i].title) <BR> + 10 + 40; <BR> totalbyte += postlen[i]; <BR> fcache[i].accessed[0] = ' '; <BR> } <BR>} <BR> <BR>void <BR>pop3_timeout() <BR>{ <BR> idletime++; <BR> if (idletime > 5) { <BR> log_usies("ABORT - TIMEOUT"); <BR> fclose(cfp); <BR> close(sock); <BR> exit(1); <BR> } <BR> alarm(POP3_TIMEOUT); <BR>} <BR> <BR> <BR>main(argc,argv) <BR>int argc; <BR>char **argv; <BR>{ <BR> <BR> struct sockaddr_in fsin,our; <BR> int on,alen,len,i, n; <BR> char *str, flag; <BR> int portnum = POP3PORT; <BR> int childpid; <BR> <BR> <BR> if (2 == argc) portnum = atoi(argv[1]); <BR> <BR> if (0 == portnum) portnum = POP3PORT; <BR> <BR> <BR> if(fork()) <BR> exit(0); <BR> for (n = 0; n<10; n++) <BR> close(n); <BR> open("/dev/null", O_RDONLY); <BR> dup2(0,1); <BR> dup2(0,2); <BR> if((n=open("/dev/tty",O_RDWR)) > 0) { <BR> ioctl(n, TIOCNOTTY, 0) ; <BR> close(n); <BR> } <BR> <BR> if ((msock = socket(AF_INET,SOCK_STREAM,0)) < 0) { <BR> exit(1); <BR> } <BR> setsockopt(msock,SOL_SOCKET,SO_REUSEADDR, (char *) &on, sizeof(on)); <BR> bzero((char *)&fsin,sizeof(fsin)); <BR> fsin.sin_family = AF_INET; <BR> fsin.sin_addr.s_addr = htonl(INADDR_ANY); <BR> fsin.sin_port = htons(portnum); <BR> <BR> if (bind(msock,(struct sockaddr *)&fsin,sizeof(fsin))<0) { <BR> exit(1); <BR> } <BR> <BR> signal(SIGHUP, (void *)abort_server) ; <BR> signal(SIGCHLD, reaper); <BR> signal(SIGINT,dokill); <BR> signal(SIGTERM,dokill); <BR> <BR> listen(msock,QLEN); <BR> <BR> while (1) { <BR> <BR> alen=sizeof(fsin); <BR> sock = accept(msock,(struct sockaddr *)&fsin,&alen); <BR> if (sock < 0) { <BR> if (errno != EINTR) <BR> continue; <BR> } <BR> <BR> if ((childpid = fork()) < 0) { <BR> exit(1); <BR> } <BR> <BR> switch (childpid) { <BR> case 0: /* child process */ <BR> close(msock); <BR> <BR> setgid(BBSGID); <BR> setuid(BBSUID); <BR> <BR> strcpy(fromhost, (char *)inet_ntoa(fsin.sin_addr)); <BR> len = sizeof our; <BR> getsockname(sock, (struct sockaddr *) &our,&len); <BR> <BR> Init(); <BR> <BR> rfc931( &fsin, &our, remote_userid ); <BR> <BR> cfp = fdopen(sock, "r+"); <BR> setbuf(cfp, (char *) 0); <BR> <BR> sprintf(genbuf, "+OK FireBird BBS Pop3 server at %s starting.", strchr(BBSNAME, '@') + 1); <BR> outs(genbuf); <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -