/[pub]/suikawiki/script/wiki.cgi
Suika

Diff of /suikawiki/script/wiki.cgi

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

revision 1.58 by wakaba, Fri Mar 12 04:54:19 2004 UTC revision 1.61 by wakaba, Mon Nov 10 15:05:30 2008 UTC
# Line 1  Line 1 
1  #!/usr/bin/perl  #!/usr/bin/perl
 BEGIN { $0 = ''.$0 }  
2  use strict;  use strict;
3  use lib qw(lib);  use lib qw[/home/httpd/html/www/markup/html/whatpm
4  use CGI::Carp qw(fatalsToBrowser);             /home/wakaba/work/manakai2/lib
5               /home/httpd/html/swe/lib/];
6  ## Configuration script  
7  require 'wikidata/suikawiki-config.ph';  use CGI::Carp qw[fatalsToBrowser];
8    require Message::CGI::Carp;
9  ## WikiDriver main module  
10  require 'suikawiki.pl';  my $sw4_url = q<http://suika.fam.cx/~wakaba/wiki/sw/>;
11    
12  =head1 NAME  require Message::CGI::HTTP;
13    require Encode::EUCJPSW;
14  wiki.cgi - SuikaWiki: Yet yet another WikiEngine - HTTP CGI Script Driver  my $cgi = Message::CGI::HTTP->new;
15    
16  =head1 DESCRIPTION  my $page = $ENV{QUERY_STRING};
17    if ($page =~ /[&;]/) {
18  This is a boot script for SuikaWiki HTTP CGI Script Driver (SWHCS).    $page = $cgi->get_parameter ('mypage') // '';
19  Actual driving of WikiEngine is coded in C<lib/suikawiki.pl>.  
20  Options such as WikiDB directories can be specified in C<wikidata/suikawiki.ph>.    my $charset = $cgi->get_parameter ('_charset_') // 'euc-jp-sw';
21      $charset = 'euc-jp-sw' unless $charset eq 'utf-8';
22  This file is part of SuikaWiki.    $page = Encode::decode ($charset, $page);
23    } else {
24  =head1 SYNOPSIS    $page = Encode::decode ('euc-jp-sw', percent_decode_byte ($page));
25    }
26    $ telnet www.example.net 80<Enter>  
27    GET /path/to/wiki/cgi/script?WikiName HTTP/1.1<Enter>  my $url = get_page_url ($page);
28    Host: www.example.net<Enter>  
29    <Enter>  print qq[Status: 301 Moved
30    Location: $url
31  Future version of SuikaWiki will accept "Accept: text/plain" HTTP  Content-Type: text/html; charset=utf-8
32  request header field.  
33    <!DOCTYPE HTML>
34  =head1 SEE ALSO  <html lang=en>
35    <title>301 Moved</title>
36  <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SuikaWiki>,  <h1>Moved</h1>
37  <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SWHCS>,  <p>See <a href="@{[htescape ($url)]}">other page</a>.];
38  C<lib/suikawiki.pl>,  exit;
39  C<wikidata/suikawiki-config.ph>  
40    sub get_page_url ($) {
41  =head1 LICENSE    my $wiki_name = shift;
42      $wiki_name = percent_encode ($wiki_name);
43  Copyright 2002-2004 Wakaba <w@suika.fam.cx>.  All rights reserved.    $wiki_name =~ s/%2F/+/g;
44      $wiki_name = $sw4_url . 'n/' . $wiki_name;
45  This program is free software; you can redistribute it and/or    return $wiki_name;
46  modify it under the same terms as Perl itself.  } # get_page_url
47    
48  =cut  sub percent_encode ($) {
49      my $s = Encode::encode ('utf8', $_[0]);
50  1; # $Date$    $s =~ s/([^A-Za-z0-9_~-])/sprintf '%%%02X', ord $1/ges;
51      return $s;
52    } # percent_encode
53    
54    sub percent_decode ($) { # input should be a byte string.
55      my $s = shift;
56      $s =~ s/%([0-9A-Fa-f]{2})/pack 'C', hex $1/ge;
57      return Encode::decode ('utf-8', $s); # non-UTF-8 octet converted to \xHH
58    } # percent_decode
59    
60    sub percent_decode_byte ($) { # input should be a byte string.
61      my $s = shift;
62      $s =~ s/%([0-9A-Fa-f]{2})/pack 'C', hex $1/ge;
63      return $s;
64    } # percent_decode_byte
65    
66    sub htescape ($) {
67      my $s = shift;
68      $s =~ s/&/&amp;/g;
69      $s =~ s/</&lt;/g;
70      $s =~ s/"/&quot;/g;
71      return $s;
72    } # htescape

Legend:
Removed from v.1.58  
changed lines
  Added in v.1.61

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24