[BACK] Return to Random2ch.cgi CVS log [TXT][DIR] Up to [Development] / Random2ch

Diff for /Random2ch/Random2ch.cgi between version 1.7 and 1.7.2.3

version 1.7, 2002/11/06 19:29:58 version 1.7.2.3, 2002/11/08 00:45:07
Line 5 
Line 5 
 ### $Id$ ### $Id$
 ### ###
 ### ###
 use strict; #use strict;
 use Socket; use Socket;
  use DB_File;
  use POSIX;
 eval {require 'jcode.pl'} eval {require 'jcode.pl'}
 or error('jcode.pl が見つかりません'); or error('jcode.pl が見つかりません');
  
Line 18 
Line 19 
                           pathReadCgi  => 'test/read.cgi',                           pathReadCgi  => 'test/read.cgi',
                           regexNeedUrl => qr{^http://(?:[^.]+\.)+(?:2ch\.net|bbspink\.com|machibbs\.com)/\S+/$}i,                           regexNeedUrl => qr{^http://(?:[^.]+\.)+(?:2ch\.net|bbspink\.com|machibbs\.com)/\S+/$}i,
                           #regexNeedUrl => qr{^http://(?:[^.]+\.)+(?:machibbs\.com)/\S+/$}i,                           #regexNeedUrl => qr{^http://(?:[^.]+\.)+(?:machibbs\.com)/\S+/$}i,
                           replaceWords => [qw(BoardName BoardUrl ThreadName ThreadUrl)],                           replaceWords => [qw(BoardName BoardUrl ThreadName ThreadUrl ThreadOrder ThreadCount)],
                           urlBbsmenu   => 'http://www.ff.iij4u.or.jp/~ch2/bbsmenu.html',                           urlBbsmenu   => 'http://www.ff.iij4u.or.jp/~ch2/bbsmenu.html',
                            usedb        => 1, # DB機能を使うなら '1' 使わないなら '0'
                            dbfile       => 'random2ch.db',
                            dblockfile   => 'dblock',
                            LOCK_EX      => 2,
                            LOCK_UN      => 8
 ); );
  
  
 ################################################################################# #################################################################################
 sub resultHtml { sub resultHtml {
         return \<<'EOF';         return \<<'EOF';
Line 39 
Line 46 
 <hr> <hr>
         <p>         <p>
                 <a href="__BoardUrl__">__BoardName__</a>板の                 <a href="__BoardUrl__">__BoardName__</a>板の
                 <a href="__ThreadUrl__">__ThreadName__</a>スレへいってらっしゃい                 __ThreadOrder__: <a href="__ThreadUrl__">__ThreadName__</a>(__ThreadCount__)スレへいってらっしゃい
         </p>         </p>
 </body> </body>
 </html> </html>
Line 73 
Line 80 
 sub getLinks; sub getLinks;
 sub getHtml; sub getHtml;
  
 my %link =(); my %link =(
                   ThreadName    =>'',
                   ThreadOrder   =>'',
                   ThreadCount   =>'',
                   ThreadUrl     =>'',
                   BordName      =>'',
                   BordUrl       =>''
  );
  
 # 板を決定 # 板を決定
 { {
Line 95 
Line 109 
                 my %thread  = %{ getLinks getHtml $subback, $option{'httpPort'} };                 my %thread  = %{ getLinks getHtml $subback, $option{'httpPort'} };
  
                 my @key = keys %thread;                 my @key = keys %thread;
                 $link{'ThreadName'} = $key[int(rand 2000) % $#key];                 # $link{'ThreadName'} = $key[int(rand 2000) % $#key];
                  my $tempThreadName = $key[int(rand 2000) % $#key];
  
                 my($server, $bbs) = ($link{'BoardUrl'} =~ m|^http://([^/]+)/([^/]+)/$|i);                 my($server, $bbs) = ($link{'BoardUrl'} =~ m|^http://([^/]+)/([^/]+)/$|i);
  
         if ($link{'BoardUrl'} =~ m/(?:2ch|bbspink)/) {         if ($link{'BoardUrl'} =~ m/(?:2ch|bbspink)/) {
                  ($link{ThreadOrder}, $link{ThreadName}, $link{ThreadCount})
                          = ($tempThreadName =~ m/^(\d+):\s+(.*)\((\d+)\)$/);
                 $link{'ThreadUrl'} = join '/', (                 $link{'ThreadUrl'} = join '/', (
                            'http:/', $server, $option{'pathReadCgi'},                            'http:/', $server, $option{'pathReadCgi'},
                            $bbs, $thread{$link{'ThreadName'}}                            $bbs, $thread{$tempThreadName}
                 );                 );
         }elsif($link{'BoardUrl'} =~ m/(?:machibbs)/o) {         }elsif($link{'BoardUrl'} =~ m/(?:machibbs)/o) {
                  ($link{ThreadOrder}, $link{ThreadName}, $link{ThreadCount})
                          = ($tempThreadName =~ m/^(.*)\((\d+)\)$/);
                 $link{'ThreadUrl'} = join '/', (                 $link{'ThreadUrl'} = join '/', (
                            'http:/', $server, $thread{$link{'ThreadName'}} =~ m|^\.\./(.*)|                            'http:/', $server, $thread{$tempThreadName} =~ m|^\.\./(.*)|
                 );                 );
         }         }
 } }
  
  # DB機能が有効な場合DBに遍歴を残す
  if ($option{usedb})
  {
          our ($db, %h);
          open (DBLOCK, $option{dblockfile});
          flock DBLOCK, $option{LOCK_EX};
          
          $db = tie %h, "DB_File", $option{dbfile}
                  or error("$option{dbfile}が開けません:$!");
  
          ############
          ## DB仕様 ##
          ############
          $h{time()} = join ',' , (
                                                           $link{ThreadUrl},
                                                           $link{ThreadName},
                                                           $link{ThreadOrder},
                                                           $link{ThreadCount},
                                                           $link{BoardName},
                                                           $link{BoardUrl}
                                                           );
          
  
          undef $db;
          untie %h;
          flock DBLOCK, $option{LOCK_UN};
  }
  
 # 結果を出力 # 結果を出力
 { {
         my $result = ${ resultHtml() };         my $result = ${ resultHtml() };
         $result =~ s/__${_}__/$link{$_}/g for @{ $option{'replaceWords'} };         $result =~ s/__${_}__/$link{$_}/g for @{ $option{'replaceWords'} };
         print $result;                 print $result;        
 } }
  
  
  
 sub getHtml { sub getHtml {


Legend:
Removed from v.1.7 
changed lines
 Added in v.1.7.2.3