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

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24