/[pub]/suikawiki/script/misc/plugins/RequestLog.wps
Suika

Diff of /suikawiki/script/misc/plugins/RequestLog.wps

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

revision 1.1.2.2 by wakaba, Tue Feb 3 07:59:16 2004 UTC revision 1.2 by wakaba, Sun Oct 5 10:26:00 2003 UTC
# Line 1  Line 1 
1  Name:  Name:
2          RequestLog          RequestLog
3  FullName:  FullName:
4          Logging HTTP Header Field Body Value in the Request          HTTP Request Header Field Body logging
5  URI:  URI:
6          IW:SuikaWiki:"Wiki//Log"          IW:SuikaWiki:"Wiki//UserAgentList"
7    
8  Description:  Description:
9          Implementation of this module is temporary.          Implementation of this module is temporary.
# Line 14  MODULE: Line 14  MODULE:
14          sub add ($$) {          sub add ($$) {
15            my ($name, $s) = @_;            my ($name, $s) = @_;
16            return unless length $s;            return unless length $s;
17            $s =~ s/([^\x20-\x24\x26-\x5A\x5C-\x7E])/sprintf '%%%02X', unpack 'C', $1/ge;            $s =~ s/([^\x20-\x24\x26-\x7E])/sprintf '%%%02X', unpack 'C', $1/ge;
               $s =~ s/(bypass-client=\d+\.\d+\.)(\d+)\.(\d+)/$1.'[VAR['.('*' x length $2).']].[VAR['.('*' x length $3).']]'/ge;  
               $s =~ s/[0-5]\d:[0-5]\d:[0-5]\d GMT/[VAR[**]]:[VAR[**]]:[VAR[**]] GMT/g;  
               $s =~ s/, (?:[012]\d|3[01])(?=[ -][JFMASOND])/, [VAR[**]]/g;  
               $s =~ s/; length=([0-9]+)/'; length=[VAR['.('*' x length $1).']]'/ge;  
18            my %ua;            my %ua;
19            for (split /\n/, $main::database{$main::PageName{'Log_'.$name}}) {            for (split /\n/, $main::database{$main::PageName{'Log_'.$name}}) {
20              if (/^-\{(\d+)\} (.+)$/) {              if (/^-\{(\d+)\} (.+)$/) {
# Line 55  MODULE: Line 51  MODULE:
51              [qw/IF_MODIFIED_SINCE IMS/],              [qw/IF_MODIFIED_SINCE IMS/],
52              [qw/XONNECTION Xonnection:/],              [qw/XONNECTION Xonnection:/],
53              [qw/XROXY_CONNECTION Xroxy-Connection:/],              [qw/XROXY_CONNECTION Xroxy-Connection:/],
54              [qw/UNLESS_MODIFIED_SINCE Unless-Modified-Since/],              [qw/UNLESS_MODIFIED_SINCE Unless-Modified-Since:/],
55              [qw/XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX:/],              [qw/XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX:/],
56              [qw/XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX:/],              [qw/XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX:/],
57              [qw/RANGE Range:/],              [qw/RANGE Range:/],
58              [qw/REQUEST_RANGE Request-Range/],              [qw/REQUEST_RANGE Request-Range:/],
59              [qw/FROM From:/],              [qw/FROM From:/],
60              [qw/DATE Date:/],              [qw/DATE Date:/],
61              [qw/CONTENT_TRANSFER_ENCODING CTE/],              [qw/CONTENT_TRANSFER_ENCODING CTE/],
62              [qw/CONTENT_LANGUAGE Content-Language/],              [qw/CONTENT_LANGUAGE Content-Language:/],
63              [qw/CONTENT_DISPOSITION Content-Disposition/],              [qw/CONTENT_DISPOSITION Content-Disposition:/],
64              [qw/REFERRER Referrer/],              [qw/REFERRER Referrer:/],
65              [qw/CONTENT_ENCODING Content-Encoding/],  #           [qw/ /],
66              [qw/CONTENT_FEATURES Content-Feature/],  #           [qw/ /],
67              [qw/ACCEPT_FEATURES Accept-Features/],  #           [qw/ /],
68              [qw/TRANSFER_ENCODING Transfer-Encoding/],  #           [qw/ /],
             [qw/CONTENT_VERSION Content-Version/],  
             [qw/DERIVED_FROM Derived-From/],  
             [qw/IF_MATCH If-Match/],  
             [qw/IF_NONE_MATCH If-None-Match/],  
             [qw/EXTENSION Extension/],  
             [qw/_______ -------/],  
             [qw/_______________ ---------------/],  
69  #           [qw/ /],  #           [qw/ /],
70            );            );
71            for (@fields) {            for (@fields) {
# Line 84  MODULE: Line 73  MODULE:
73            }            }
74            $main::PageName{Log_CONTENT_TYPE} = 'Wiki//Log//ContentType//'.$year;            $main::PageName{Log_CONTENT_TYPE} = 'Wiki//Log//ContentType//'.$year;
75            $main::PageName{Log_REQUEST_METHOD} = 'Wiki//Log//RequestMethod//'.$year;            $main::PageName{Log_REQUEST_METHOD} = 'Wiki//Log//RequestMethod//'.$year;
           $main::PageName{Log_HeaderField} = 'Wiki//Log//HeaderField//'.$year;  
           
76            push @{$SuikaWiki::Plugin::On{WikiDatabaseLoaded}}, sub {            push @{$SuikaWiki::Plugin::On{WikiDatabaseLoaded}}, sub {
77              for (map {$_->[0]} @fields) {              for (map {$_->[0]} @fields) {
78                my $v = $main::ENV{'HTTP_'.$_};                my $s = $main::ENV{'HTTP_'.$_};
79                add ($_ => $v);                if ({qw/IF_MODIFIED_SINCE 1 DATE 1 UNLESS_MODIFIED_SINCE 1/}->{$_}) {
80                    $s =~ s/(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]/[VAR[**]]:[VAR[**]]:[VAR[**]]/;
81                    $s =~ s/, (?:[012][0-9]|3[01])(?=[ -])/, [VAR[**]]/;
82                    $s =~ s/length=[0-9]+/length=[VAR[*]]/;
83                  }
84                  add ($_ => $s);
85              }              }
86              add ('CONTENT_TYPE' => $main::ENV{CONTENT_TYPE});              add ('CONTENT_TYPE' => $main::ENV{CONTENT_TYPE});
87              add ('REQUEST_METHOD' => $main::ENV{REQUEST_METHOD});              add ('REQUEST_METHOD' => $main::ENV{REQUEST_METHOD});
   
             for (grep s/^HTTP_//, keys %main::ENV) {  
               (my $name = ucfirst lc $_) =~ s/_([a-z])/-\U$1/g;  
               $name =~ tr/_/-/;  
               add ('HeaderField' => $name);  
             }  
88            };            };
89                    
           
90    
91    
92  POD:TO DO:  POD:TO DO:

Legend:
Removed from v.1.1.2.2  
changed lines
  Added in v.1.2

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24