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

📄 00000008.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;Leeward&nbsp;(X&nbsp;14%&nbsp;completed),&nbsp;信区:&nbsp;Linux&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;FireBirdBBS(2.5)&nbsp;pop3d&nbsp;(tested&nbsp;AIX/SUN/Linux)&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Sun&nbsp;Jun&nbsp;14&nbsp;16:25:00&nbsp;1998)&nbsp;<BR>&nbsp;<BR>补充说明:该程序启动成功后,自动脱离终端,以守护进程方式运行。&nbsp;<BR>&nbsp;<BR>/*&nbsp;Leeward:&nbsp;usage:&nbsp;bbspop3d&nbsp;[port]&nbsp;<BR>&nbsp;&nbsp;&nbsp;Note:&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;If&nbsp;no&nbsp;port&nbsp;given,&nbsp;I&nbsp;use&nbsp;110&nbsp;(in&nbsp;fact,&nbsp;using&nbsp;macro&nbsp;POP3PORT)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;If&nbsp;atoi(port)&nbsp;returns&nbsp;zero,&nbsp;I&nbsp;use&nbsp;110&nbsp;&nbsp;(the&nbsp;same&nbsp;as&nbsp;above)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp;Using&nbsp;port&nbsp;110&nbsp;needs&nbsp;starting&nbsp;by&nbsp;root&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;started&nbsp;by&nbsp;bbsroot,&nbsp;try&nbsp;port&nbsp;over&nbsp;1023&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.&nbsp;Three&nbsp;macros&nbsp;defined&nbsp;below:&nbsp;BBSHOME,&nbsp;POP3PORT&nbsp;and&nbsp;BBSNAME&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;You&nbsp;may&nbsp;need&nbsp;modify&nbsp;these&nbsp;three&nbsp;macros&nbsp;to&nbsp;fit&nbsp;your&nbsp;BBS&nbsp;settings&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.&nbsp;I&nbsp;added&nbsp;codes&nbsp;to&nbsp;support&nbsp;two&nbsp;functions:&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)&nbsp;Top&nbsp;//&nbsp;extended&nbsp;POP3&nbsp;function&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2)&nbsp;nextwordX&nbsp;//&nbsp;enable&nbsp;passwords&nbsp;including&nbsp;space&nbsp;character(s)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6.&nbsp;While&nbsp;making&nbsp;bbspop3d,&nbsp;you&nbsp;might&nbsp;encounter&nbsp;linker&nbsp;errors&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Try&nbsp;to&nbsp;pass&nbsp;the&nbsp;linker&nbsp;some&nbsp;libraries&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(For&nbsp;example:&nbsp;link&nbsp;under&nbsp;SUNOS,&nbsp;you&nbsp;may&nbsp;need&nbsp;add&nbsp;-lnsl&nbsp;and&nbsp;-lsocket)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7.&nbsp;bbspop3d.c&nbsp;is&nbsp;put&nbsp;in&nbsp;the&nbsp;same&nbsp;directory&nbsp;as&nbsp;bbs.h&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8.&nbsp;Client&nbsp;settings:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)&nbsp;pop3&nbsp;server&nbsp;&nbsp;:&nbsp;Your&nbsp;BBS&nbsp;server&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2)&nbsp;pop3&nbsp;port&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;110(POP3PORT)&nbsp;or&nbsp;the&nbsp;argv[1]&nbsp;while&nbsp;starting&nbsp;pop3d&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(3)&nbsp;pop3&nbsp;account&nbsp;:&nbsp;BBSID.bbs&nbsp;(For&nbsp;example:&nbsp;mine&nbsp;is&nbsp;&quot;Leeward.bbs&quot;)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(4)&nbsp;pop3&nbsp;password:&nbsp;The&nbsp;same&nbsp;as&nbsp;the&nbsp;client's&nbsp;BBSID's&nbsp;password&nbsp;<BR>&nbsp;&nbsp;Last&nbsp;modified:&nbsp;98.06.14&nbsp;&nbsp;<BR>*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>#include&nbsp;&lt;sys/ioctl.h&gt;&nbsp;<BR>#include&nbsp;&quot;bbs.h&quot;&nbsp;<BR>&nbsp;<BR>#include&nbsp;&lt;sys/wait.h&gt;&nbsp;<BR>#include&nbsp;&lt;netinet/in.h&gt;&nbsp;<BR>#include&nbsp;&lt;sys/socket.h&gt;&nbsp;<BR>#include&nbsp;&lt;netdb.h&gt;&nbsp;<BR>&nbsp;<BR>#include&nbsp;&lt;sys/time.h&gt;&nbsp;<BR>#include&nbsp;&lt;sys/stat.h&gt;&nbsp;<BR>&nbsp;<BR>#define&nbsp;BBSUID&nbsp;9999&nbsp;<BR>#define&nbsp;BBSGID&nbsp;99&nbsp;<BR>#define&nbsp;BUFSIZE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1024&nbsp;<BR>#define&nbsp;BBSHOME&nbsp;&quot;/home0/bbs&quot;&nbsp;<BR>#define&nbsp;BBSNAME&nbsp;&quot;<A HREF="mailto:.bbs@bbs.net.tsinghua.edu.cn"">.bbs@bbs.net.tsinghua.edu.cn"</A>&nbsp;<BR>#define&nbsp;POP3PORT&nbsp;110&nbsp;<BR>&nbsp;<BR>struct&nbsp;fileheader&nbsp;currentmail;&nbsp;<BR>struct&nbsp;userec&nbsp;currentuser;&nbsp;<BR>&nbsp;<BR>char&nbsp;LowUserid[20];&nbsp;<BR>char&nbsp;genbuf[BUFSIZE];&nbsp;<BR>&nbsp;<BR>#define&nbsp;QLEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;<BR>&nbsp;<BR>#define&nbsp;S_CONNECT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;<BR>#define&nbsp;S_LOGIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>#define&nbsp;STRN_CPY(d,s,l)&nbsp;{&nbsp;strncpy((d),(s),(l));&nbsp;(d)[(l)-1]&nbsp;=&nbsp;0;&nbsp;}&nbsp;<BR>#define&nbsp;ANY_PORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;<BR>#define&nbsp;RFC931_PORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;113&nbsp;<BR>#define&nbsp;RFC931_TIMEOUT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;<BR>/*#define&nbsp;POP3_TIMEOUT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;60*/&nbsp;<BR>/*&nbsp;Leeward&nbsp;98.05.06&nbsp;Increases&nbsp;TIMEOUT&nbsp;value&nbsp;for&nbsp;slow&nbsp;modem&nbsp;users&nbsp;*/&nbsp;<BR>#define&nbsp;POP3_TIMEOUT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;180&nbsp;<BR>&nbsp;<BR>static&nbsp;jmp_buf&nbsp;timebuf;&nbsp;<BR>&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;State;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msock,sock;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;master&nbsp;server&nbsp;socket&nbsp;*/&nbsp;<BR>static&nbsp;int&nbsp;reaper();&nbsp;<BR>char&nbsp;&nbsp;&nbsp;&nbsp;fromhost[&nbsp;STRLEN&nbsp;];&nbsp;<BR>char&nbsp;&nbsp;&nbsp;&nbsp;inbuf[&nbsp;BUFSIZE&nbsp;];&nbsp;<BR>char&nbsp;&nbsp;&nbsp;&nbsp;remote_userid[&nbsp;STRLEN&nbsp;];&nbsp;<BR>FILE&nbsp;&nbsp;&nbsp;&nbsp;*cfp;&nbsp;<BR>char&nbsp;&nbsp;&nbsp;&nbsp;*msg,*cmd;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fd;&nbsp;<BR>struct&nbsp;&nbsp;fileheader&nbsp;*fcache;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;totalnum,&nbsp;totalbyte,&nbsp;markdel,&nbsp;idletime;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*postlen;&nbsp;<BR>&nbsp;<BR>void&nbsp;&nbsp;&nbsp;&nbsp;log_usies();&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Quit(),&nbsp;User(),&nbsp;Pass(),&nbsp;Noop(),&nbsp;Stat(),&nbsp;List(),&nbsp;Retr(),&nbsp;Rset();&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Last(),&nbsp;Dele(),&nbsp;Uidl();&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Top();&nbsp;/*&nbsp;Leeward&nbsp;adds,&nbsp;98.01.21&nbsp;*/&nbsp;<BR>&nbsp;<BR>struct&nbsp;commandlist&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*name;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*fptr)();&nbsp;<BR>}&nbsp;cmdlists[]&nbsp;=&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;retr&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retr,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;dele&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dele,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;user&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;pass&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pass,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;stat&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stat,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;list&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;uidl&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uidl,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;quit&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Quit,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;rset&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rset,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;last&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Last,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;noop&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Noop,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;top&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Top,&nbsp;&nbsp;/*&nbsp;Leeward&nbsp;adds,&nbsp;98.01.21&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL&nbsp;<BR>};&nbsp;<BR>&nbsp;<BR>char&nbsp;*crypt();&nbsp;<BR>&nbsp;<BR>int&nbsp;<BR>checkpasswd(passwd,&nbsp;test)&nbsp;<BR>char&nbsp;*passwd,&nbsp;*test;&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;char&nbsp;pwbuf[14];&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*pw;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;strncpy(pwbuf,&nbsp;test,&nbsp;14);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pw&nbsp;=&nbsp;crypt(pwbuf,&nbsp;passwd);&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(!strcmp(pw,&nbsp;passwd));&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>static&nbsp;int&nbsp;<BR>abort_server()&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;log_usies(&quot;ABORT&nbsp;SERVER&quot;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;close(msock);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;close(sock);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;exit(1);&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>int&nbsp;dokill()&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;&nbsp;kill(0,SIGKILL);&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>static&nbsp;FILE&nbsp;*fsocket(domain,&nbsp;type,&nbsp;protocol)&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;domain;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type;&nbsp;&nbsp;&nbsp;<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protocol;&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;FILE&nbsp;&nbsp;&nbsp;*fp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((s&nbsp;=&nbsp;socket(domain,&nbsp;type,&nbsp;protocol))&nbsp;&lt;&nbsp;0)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(0);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((fp&nbsp;=&nbsp;fdopen(s,&nbsp;&quot;r+&quot;))&nbsp;==&nbsp;0)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close(s);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(fp);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>void&nbsp;<BR>outs(str)&nbsp;<BR>char&nbsp;*str;&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;char&nbsp;sendbuf[BUFSIZE];&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;(void)bzero(sendbuf,&nbsp;sizeof(sendbuf));&nbsp;<BR>&nbsp;&nbsp;(void)sprintf(sendbuf,&nbsp;&quot;%s\r\n&quot;,&nbsp;str);&nbsp;<BR>&nbsp;&nbsp;(void)write(sock,&nbsp;sendbuf,&nbsp;strlen(sendbuf));&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>

⌨️ 快捷键说明

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