/[pub]/suikawiki/script/lib/suikawiki.pl
Suika

Diff of /suikawiki/script/lib/suikawiki.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.33 by wakaba, Sun May 28 01:59:51 2006 UTC revision 1.34 by wakaba, Sun Aug 17 05:14:53 2008 UTC
# Line 64  our $VERSION = do{my @r=(q$Revision$=~/\ Line 64  our $VERSION = do{my @r=(q$Revision$=~/\
64  ## -- Setting Upper Bound for Too Many Accesses at the Same Time --  ## -- Setting Upper Bound for Too Many Accesses at the Same Time --
65    
66  {  {
67      my $lock_key = 'main';
68      my $lock_limit = $WIKI->{config}->{engine_max_access};
69      if ($main::ENV{HTTP_USER_AGENT} eq '' or
70          $main::ENV{HTTP_USER_AGENT} =~ /[Bb][Oo][Tt]/) {
71        $lock_key = 'robot-main';
72        $lock_limit = $WIKI->{config}->{engine_robot_max_access};
73      } elsif ($main::ENV{REQUEST_METHOD} eq 'POST' and
74               $main::ENV{HTTP_USER_AGENT} =~ /Gecko/) {
75        $lock_key = 'main-post';
76      }
77    
78    require SuikaWiki::DB::Util::Lock;    require SuikaWiki::DB::Util::Lock;
79    my $lock = SuikaWiki::DB::Util::Lock    my $lock = SuikaWiki::DB::Util::Lock
80                 ->new (-directory => $WIKI->{config}->{path_to}->{db__lock__dir},                 ->new (-directory => $WIKI->{config}->{path_to}->{db__lock__dir},
81                        -name => 'main',                        -name => $lock_key,
82                        -share => 1,                        -share => 1,
83                        -limit => $WIKI->{config}->{engine_max_access});                        -limit => $lock_limit);
84    $lock->lock or do {    $lock->lock or do {
85      require SuikaWiki::Output::HTTP;      require SuikaWiki::Output::HTTP;
86      my $out = SuikaWiki::Output::HTTP->new;      my $out = SuikaWiki::Output::HTTP->new;
# Line 86  our $VERSION = do{my @r=(q$Revision$=~/\ Line 97  our $VERSION = do{my @r=(q$Revision$=~/\
97      for ($wiki_name_version) {      for ($wiki_name_version) {
98        s/&/&amp;/g; s/</&lt;/g; s/([^\x20-\x7E])/sprintf '&#x%02X;', ord $1/ge;        s/&/&amp;/g; s/</&lt;/g; s/([^\x20-\x7E])/sprintf '&#x%02X;', ord $1/ge;
99      };      };
100        my $refresh = '';
101        my $refresh_flag = '';
102        if ($main::ENV{REQUEST_METHOD} eq 'GET') {
103          $refresh = '<meta http-equiv=Refresh content=60>';
104          $refresh_flag = ' [Refreshed after a minute]';
105        }
106      $out->{entity}->{body} = qq<      $out->{entity}->{body} = qq<
107        <!DOCTYPE html SYSTEM>        <!DOCTYPE html SYSTEM>
108        <title>503 WikiEngine Busy</title>        <title>503 WikiEngine Busy$refresh_flag</title>
109          $refresh
110        <h1>WikiEngine Busy</h1>        <h1>WikiEngine Busy</h1>
111        <p>WikiEngine is now busy and is unable to complete your request.        <p>WikiEngine is now busy and is unable to complete your request.
112        Please retry again after a moment.</p>        Please retry again after a moment.</p>
# Line 326  sub main::code_convert { Line 344  sub main::code_convert {
344      $mode =~ tr/-/_/;      $mode =~ tr/-/_/;
345      my $data = $wiki->{input}->parameter ('wikiform__msg');      my $data = $wiki->{input}->parameter ('wikiform__msg');
346      if (($mode eq 'wikiform' and $page =~ /^http:/) or      if (($mode eq 'wikiform' and $page =~ /^http:/) or
347          ($mode eq 'wikiform' and ($data =~ s/http:/http:/g) > 20)) {          ($mode eq 'wikiform' and ($data =~ s/http:/http:/g) > 5)) {
348        $mode = 'spam';        $mode = 'spam';
349        push @{$wiki->{var}->{client}->{used_for_negotiate}}, 'Negotiate';        push @{$wiki->{var}->{client}->{used_for_negotiate}}, 'Negotiate';
350      }      }

Legend:
Removed from v.1.33  
changed lines
  Added in v.1.34

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24