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

Telnet服务器

开发平台:

Unix_Linux

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