📄 00000008.htm
字号:
<BR> chdir(BBSHOME); <BR> <BR> log_usies("CONNECT"); <BR> alarm(0); <BR> signal(SIGALRM, pop3_timeout); <BR> alarm(POP3_TIMEOUT); <BR> <BR> while (fgets(inbuf, sizeof(inbuf), cfp)!=0) { <BR> <BR> idletime = 0; <BR> <BR> msg = inbuf; <BR> <BR> inbuf[ strlen(inbuf)-1 ] = '\0'; <BR> if (inbuf[strlen(inbuf)-1] == '\r') inbuf[strlen(inbuf)-1] = '\0'; <BR> cmd = nextwordlower(&msg); <BR> <BR> if (*cmd==0) continue; <BR> <BR> i = 0; <BR> while ( (str = cmdlists[i].name) != NULL ) { <BR> if ( strcmp( cmd, str ) == 0 ) break; <BR> i++; <BR> } <BR> <BR> if (str==NULL) <BR> { <BR> sprintf(genbuf, "-ERR Unknown command: \"%s\".", cmd); <BR> outs(genbuf); <BR> } <BR> else (*cmdlists[i].fptr)(); <BR> <BR> } <BR> <BR> if (State == S_LOGIN) { <BR> free(fcache); <BR> free(postlen); <BR> } <BR> log_usies("ABORT"); <BR> fclose(cfp); <BR> close(sock); <BR> exit(0); <BR> break; <BR> default: /* parent process */ <BR> close(sock); <BR> break; <BR> } <BR> } <BR>} <BR> <BR>static int <BR>reaper() <BR>{ <BR> int state, pid; <BR> <BR> signal(SIGCHLD,SIG_IGN); <BR> signal(SIGINT,dokill); <BR> signal(SIGTERM,dokill); <BR> <BR> while (( pid = waitpid(-1, &state, WNOHANG|WUNTRACED)) > 0); <BR>} <BR> <BR>int <BR>Noop() <BR>{ <BR> outs("+OK"); <BR> return; <BR>} <BR> <BR>int <BR>get_userdata(user) <BR>char *user; <BR>{ <BR> FILE *rec; <BR> int found=0; <BR> char buf[256]; <BR> <BR> sprintf(buf, "%s/.PASSWDS", BBSHOME); <BR> if((rec=fopen(buf,"rb"))==NULL) <BR> return -1; <BR> while(1) <BR> { <BR> if(fread(&currentuser,sizeof(currentuser),1,rec)<=0) break; <BR> if(currentuser.numlogins<=0) <BR> continue; <BR> if(strcasecmp(user,currentuser.userid)) <BR> continue; <BR> else <BR> { <BR> found=1; <BR> strcpy(user,currentuser.userid); <BR> break; <BR> } <BR> } <BR> fclose(rec); <BR> if(!found) <BR> return -1; <BR> else <BR> return 1; <BR> <BR>} <BR> <BR>int <BR>User() <BR>{ <BR> char *ptr; <BR> <BR> if (State == S_LOGIN) { <BR> outs("-ERR Unknown command: \"user\"."); <BR> return; <BR> } <BR> <BR> cmd = nextwordlower(&msg); <BR> if (*cmd == 0) { <BR> outs("-ERR Too few arguments for the user command."); <BR> return; <BR> } <BR> if (strstr(cmd, ".bbs") == NULL) { <BR> sprintf(genbuf, "-ERR Unknown user: \"%s\".", cmd); <BR> outs(genbuf); <BR> return; <BR> } <BR> <BR> ptr = strchr(cmd, '.'); <BR> *ptr = '\0'; <BR> if(get_userdata(cmd)==1) <BR> { <BR> strcpy(LowUserid, cmd); <BR> sprintf(genbuf, "+OK Password required for %s.bbs.", cmd); <BR> outs(genbuf); <BR> }else <BR> { <BR> sprintf(genbuf, "-ERR Unknown user: \"%s\".", cmd); <BR> outs(genbuf); <BR> } <BR> return; <BR>} <BR> <BR>void <BR>log_usies(buf) <BR>char *buf; <BR>{ <BR> FILE *fp; <BR> long ti; <BR> <BR> if ((fp = fopen("reclog/pop3d.log","a")) != NULL) { <BR> time_t now; <BR> struct tm *p; <BR> <BR> time(&now); <BR> p = localtime(&now); <BR> fprintf(fp, "%02d/%02d/%02d %02d:%02d:%02d [%s](%s) %s\n", <BR> p->tm_year, p->tm_mon+1, p->tm_mday, p->tm_hour, p->tm_min, <BR> p->tm_sec, currentuser.userid ? currentuser.userid : "", <BR> remote_userid ? remote_userid : "", buf); <BR> fflush(fp); <BR> fclose(fp); <BR> } <BR>} <BR> <BR>int <BR>Retr() <BR>{ <BR> int num; <BR> <BR> if (State != S_LOGIN) { <BR> outs("-ERR Unknown command: \"retr\"."); <BR> return; <BR> } <BR> <BR> cmd = nextword(&msg); <BR> <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -