bbslib.pl.in
上传用户:minyiyu
上传日期:2018-12-24
资源大小:864k
文件大小:3k
源码类别:

Telnet服务器

开发平台:

Unix_Linux

  1. #!@PERL@
  2. #$Id: bbslib.pl.in,v 1.1 2000/01/15 01:45:39 edwardc Exp $
  3. $BBSLIB = 1;
  4. sub initial_bbs
  5. {
  6.     if( ! open( FN, "$inndhome/bbsname.bbs" ) ) {
  7. return 0;
  8.     }
  9.     while( <FN> ) {
  10. ($mybbsid) = split( /s+/, $_ );
  11.     }
  12.     close( FN );
  13.     if( ! open( FN, "$inndhome/nodelist.bbs" ) ) {
  14. return 0;
  15.     }
  16.     @NODELIST = <FN>;
  17.     close( FN );
  18.     if( ! open( FN, "$inndhome/newsfeeds.bbs" ) ) {
  19. return 0;
  20.     }
  21.     @NEWSFEEDS = <FN>;
  22.     close( FN );
  23.     return 1;
  24. }
  25. sub search_nodelist
  26. {
  27.     local ($site) = @_;
  28.     local ($id, $addr, $name);
  29.     foreach $line ( @NODELIST ) {
  30. chop( $line );
  31. ($id, $addr, $name) = split( /s+/, $line );
  32. if( $id eq $site ) {
  33.     $name = substr( $line, index( $line, $name ) );
  34.     return( $addr, $name );
  35. }
  36.     }
  37.     return( $null, $null );
  38. }
  39. sub search_group
  40. {
  41.     local ($newsgroup) = @_;
  42.     local ($group, $board, $server);
  43.     foreach $line ( @NEWSFEEDS ) {
  44. ($group, $board, $server) = split( /s+/, $line );
  45. if( $group eq $newsgroup ) {
  46.     return( $board, $server );
  47. }
  48.     }
  49.     return( $null, $null );
  50. }
  51. sub search_board
  52. {
  53.     local ($bbsboard) = @_;
  54.     local ($group, $board, $server);
  55.     foreach $line ( @NEWSFEEDS ) {
  56. ($group, $board, $server) = split( /s+/, $line );
  57. if( $board eq $bbsboard && ord( $line ) != ord( "#" ) ) {
  58.     return( $group, $server );
  59. }
  60.     }
  61.     return( $null, $null );
  62. }
  63. sub ascii_date
  64. {
  65.     local       ($time) = @_;
  66.     local       ($sec,$min,$hr,$mday,$mon,$year,$wday,$yday,$isdst);
  67.     ($sec,$min,$hr,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime( $time );
  68.     $wday = ("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat")[ $wday ];
  69.     $mon = ("Jan", "Feb", "Mar", "Apr", "May", "Jun",
  70.             "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")[ $mon ];
  71.     return sprintf( "$mday $mon 19$year %02d:%02d:%02d GMT", $hr, $min, $sec );
  72. }
  73. sub bbslog
  74. {
  75.     if( $logfile ) {
  76. open( FN, ">> $logfile" );
  77. print FN @_;
  78. close( FN );
  79.     }
  80. }
  81. sub get_tmpfile
  82. {
  83.     open( FN, $tmpfile );
  84.     $result = <FN>;
  85.     close( FN );
  86.     unlink( $tmpfile );
  87.     return( $result );
  88. }
  89. sub lock_history
  90. {
  91.     foreach $n (1..10) {
  92. if( ! -f "$history.lock" ) {
  93.     last;
  94. }
  95. sleep( 1 );
  96.     }
  97.     open( FN, "> $history.lock" );
  98.     close( FN );
  99. }
  100. sub add_history
  101. {
  102.     local ($msgid, $filelist) = @_;
  103.     local (%HIST);
  104.     &lock_history();
  105.     dbmopen( %HIST, $history, 0666 );
  106.     $HIST{ $msgid } = $filelist;
  107.     dbmclose( HIST );
  108.     open( FN, ">> $history" );
  109.     print FN "$msgidt$filelistn";
  110.     close( FN );
  111.     unlink( "$history.lock" );
  112. }
  113. sub find_history
  114. {
  115.     local ($msgid) = @_;
  116.     local (%HIST, $filelist);
  117.     &lock_history();
  118.     dbmopen( %HIST, $history, 0666 );
  119.     $filelist = $HIST{ $msgid };
  120.     dbmclose( HIST );
  121.     if( ! $filelist ) {
  122. dbmopen( %HIST, "$history.z", 0666 );
  123. $filelist = $HIST{ $msgid };
  124. dbmclose( HIST );
  125.     }
  126.     @STAT = stat( "$history" );
  127.     $time = $STAT[ 9 ];
  128.     @STAT = stat( "$history.z" );
  129.     $ztime = $STAT[ 9 ];
  130.     if( $time - $ztime > 7 * 86400 ) {
  131. rename( "$history", "$history.z" );
  132. rename( "$history.dir", "$history.z.dir" );
  133. rename( "$history.pag", "$history.z.pag" );
  134.     }
  135.     unlink( "$history.lock" );
  136.     return( $filelist );
  137. }